2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ユーザーが5回または10回アプリを起動した時にレビューを依頼する方法

Posted at

はじめに

レビューアラートを表示する方法自体はimport StoreKitを含めてもほんの2行で済むのですが、いつどこで表示させるかが悩みどころ。わざわざレビューのためのボタンを配置するのも億劫なので、特定の回数起動された時に依頼することにしました。

回数をカウントする

Userdefaultsを使って起動回数をカウントします。

let key = "startupCount"
let userDefaults = UserDefaults(suiteName: "/*一意に定まる名前*/")
userDefaults?.setValue((userDefaults?.integer(forKey: key))!+1, forKey: key)
userDefaults?.synchronize()
let count = userDefaults?.integer(forKey: key)

実行された回数を数えるための変数を用意します。僕はこれをアプリが起動された時に実行される関数の中に入れましたが、数えたいものによってはイニシャライザの中に入れても良いと思います。

レビューを表示させる

レビューを表示すること自体はとても簡単です。StoreKitをimportし、表示させたいところに

SKStoreReviewController.requestReview()

と書きます。
今回は起動回数が5または10の時表示させたいので

if count == 5 || count == 10  {
SKStoreReviewController.requestReview()
}

としました。

SceneDelegateに処理を加える

アプリによってはAppDelegateで起動時の処理を行っているものもあると思います。(特にxcode11以前のもの)

SceneDelegate.swift
class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        let contentView = Tab()
        let key = "startupCount"
        let userDefaults = UserDefaults(suiteName: "group.otsuka.amane.ColorDesignApp")
        userDefaults?.setValue((userDefaults?.integer(forKey: key))!+1, forKey: key)
        userDefaults?.synchronize()
        let count = userDefaults?.integer(forKey: key)
        
        
        // Use a UIHostingController as window root view controller.
        if let windowScene = scene as? UIWindowScene {
            let window = UIWindow(windowScene: windowScene)
            window.rootViewController = UIHostingController(rootView: contentView)
            self.window = window
            window.makeKeyAndVisible()
            if count == 5 || count == 10  {
                SKStoreReviewController.requestReview()
            }
        }
    }
//省略
}

なおここで使っているTab()とははじめに表示される画面のことで
スクリーンショット 2021-01-28 10.15.20.jpg

こんな感じで定義しています。詳しくはこちら

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?