1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[SwiftUI] レビューリクエストの頻度を設定する方法

Posted at

1. はじめに

アプリを開発する際、ユーザーからのフィードバックを得ることは非常に重要であり、レビューはユーザーがアプリをインストールするかどうかを決定する際の参考になります。
しかし、レビューリクエストは頻度が多いと、ユーザー体験を損なう可能性もあります。そこで、適切な頻度でレビューを促す仕組みを導入することが大切です。

本記事では、SwiftUIを使って、アプリ内でビューの遷移回数に応じてSKStoreReviewControllerを用いたレビューリクエストを行う簡単な実装方法を紹介します。
ユーザーがある程度アプリを使い慣れた段階で自然にレビューを促すことで、ポジティブなフィードバックを得やすくし、UX(ユーザーエクスペリエンス)を向上させることができます。

2. 完成イメージ

FirstViewに3回遷移した時にレビューリクエストが送られる。
ScreenRecording_10-07-2024 10-30-54_1.gif

3. サンプルコード

・レビューリクエストを送るための関数

RequestReview
import StoreKit

// レビューリクエストをカウントして、特定の回数に達したらリクエストを送る関数
func RequestReview() {
    // アクション回数を保存するためのUserDefaultsキー
    let key = "reviewRequestCount"
    let threshold = 3  // レビューをリクエストする頻度(例:3回に1回)
    
    // 現在のカウントを取得
    let currentCount = UserDefaults.standard.integer(forKey: key)
    
    // カウントをインクリメント
    let count = currentCount + 1
    UserDefaults.standard.set(count, forKey: key)
    
    // 指定回数に達したらレビューをリクエストし、カウントをリセット
    if count >= threshold {
        if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
            SKStoreReviewController.requestReview(in: windowScene)
        }
        UserDefaults.standard.set(0, forKey: key)  // カウントをリセット
    }
}

・FirstView(3回遷移したとき、レビューリクエストが表示される。)

FirstView
import SwiftUI

struct FirstView: View {
    var body: some View {
        NavigationView {
            VStack {
                Text("FirstView")
                    .font(.largeTitle)
                    .padding()
                // SecondViewへのリンク
                NavigationLink(destination: SecondView()) {
                    Text("Go to SecondView")
                        .font(.title)
                        .padding()
                        .background(Color.blue)
                        .foregroundColor(.white)
                        .cornerRadius(10)
                }
            }
            .onAppear {
                // 画面表示時にRequestReviewを呼び出す
                RequestReview()
            }
        }
    }
}

#Preview {
    FirstView()
}

・SecondView

SecondView
import SwiftUI

struct SecondView: View {
    // dismissを使うためにEnvironmentから取得
    @Environment(\.dismiss) var dismiss
    
    var body: some View {
        VStack {
            Text("SecondView")
                .font(.largeTitle)
                .padding()
            
            Button(action: {
                // dismissを使って前の画面に戻る
                dismiss()
            }) {
                Text("Back to FirstView")
                    .font(.title)
                    .padding()
                    .background(Color.red)
                    .foregroundColor(.white)
                    .cornerRadius(10)
            }
        }
        .navigationBarBackButtonHidden()
    }
}

#Preview {
    SecondView()
}

4. まとめ

レビューリクエストをアプリ内で適切な頻度で表示することは、UXを損なわずにフィードバックを得るための重要な手法です。今回紹介した実装方法では、ビュー遷移の回数に応じて自動的にレビューリクエストを送信する仕組みを構築しました。
また、今回は3回に1回の頻度にしましたが、ご自身が適切だと思う頻度に設定して試してみてください。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?