TL;DR
iOS 10.3 からアプリ内でレーティングできる SKStoreReviewController が使えるようになりましたが表示するタイミングを調整しないといけないですよね。その調整が簡単にできるライブラリ SwiftRaterを作りました。
SKStoreReviewController
iOS 10.3 からアプリ内でレーティングできるようになりましたね。記事もいくつか出ています。
- iOS 10.3で追加されたアプリレビューを投稿できるSKStoreReviewControllerを試してみた
- iOS 10.3からアプリ内レーティングが可能に!- SKStoreReviewController -
ですが、どのタイミングで表示すればいいかは考えないといけないですね。
似たようなライブラリに appirater というものがありますが、
* SKStoreReviewController にはまだ対応していない
* Objective-c で書かれている
だったので Swift で書いてみました。
使い方
Cocoapods か Carthage でインストールします。
Cocoapods
pod "SwiftRater"
Carthage
github "takecian/SwiftRater"
AppDelegate の中でセットアップをします。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
SwiftRater.daysUntilPrompt = 7
SwiftRater.usesUntilPrompt = 10
SwiftRater.significantUsesUntilPrompt = 3
SwiftRater.daysBeforeReminding = 1
SwiftRater.showLaterButton = true
SwiftRater.debugMode = true
SwiftRater.appLaunched()
return true
}
SwiftRater では レーティングのポップアップを表示するための条件を複数指定できます。
Property | Description |
---|---|
daysUntilPrompt | ポップアップを表示するまでの日数。 |
usesUntilPrompt | ポップアップを表示するまでの起動(使用)回数 |
significantUsesUntilPrompt | ポップアップを表示するまでの重要なアクションの実行回数 |
例えば、「初回起動から10日経つか、15回起動したらポップアップを表示する」という条件にしたいなら
SwiftRater.daysUntilPrompt = 10
SwiftRater.usesUntilPrompt = 15
SwiftRater.appLaunched()
と設定します。
例えばインスタグラムのような写真投稿アプリの場合で「写真を10枚投稿したらポップアップを出す」という条件にしたいなら、
SwiftRater.significantUsesUntilPrompt = 10
SwiftRater.appLaunched()
と指定し、写真投稿を実装する部分に、SwiftRater.incrementSignificantUsageCount()
を追加します。
func uploadPhoto() {
** upload photo **
SwiftRater.incrementSignificantUsageCount()
}
そしてポップアップを表示したい場所にSwiftRater.check()
を追加します。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
SwiftRater.check()
}
セットアップの時の指定した条件を満たしていたら(一回だけ)レーティングのポップアップを表示します。
iOS10.3 未満のデバイスへの対応
iOS10.3 未満のデバイスに対しては Alert を表示して、AppStore へ遷移するようになっています。
iOS10.3 未満のデバイスに表示するポップアップにはすぐにはレーティングしない「あとで(Remind later)」も選択できます。「あとで(Remind later)」を選んだユーザーには x 日後に再度ポップアップを表示する(リマインダー)ことができます。この「あとで」の選択肢を表示するかどうか、リマインダーの設定もセットアップ時にできます。
SwiftRater.daysBeforeReminding = 1
SwiftRater.showLaterButton = true
動作確認
開発中に動作確認をしたい場合は、
SwiftRater.debugMode = true
にして実行すると毎回ポップアップが表示されるようになります。(AppStore に提出するときは false にしておかないと毎回ポップアップが表示されてしまうので注意(デフォルト:false))
ユーザーのレーティングを集めることは重要なことなのでこのライブラリを使ってどんどんレーティングを増やしてみるのはいかがでしょうか。