最初に結論
SKStoreReviewController.requestReview()を発火させてもポップアップが表示されない場合に考えられる原因は
1. 端末の時間を変更している
2. ネットワーク通信ができていない
3. TestFlight経由である
レビューを配布テストしたい場合はプロモーションコード経由のテストを行いましょう
概要
iOS 10.3以降で使える
Appleが公式で用意しているレビュー訴求用のAPI
SKStoreReviewController
表示するのは非常にカンタンで以下のように一行書くだけです。
import UIKit
// ↓これをimport
import StoreKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// これで発火
SKStoreReviewController.requestReview()
}
}
この画面はappleにapiで問い合せて表示しています。
その為、メソッドを発火させてもポップアップを表示させるには
api通信で成功し、表示させるべく結果が返ってくる必要があります。
この時、圏外であれば当然結果が返ってこないため表示がされず、
また端末の時間が現在時刻から変更されていると表示されません。
(試すとだいたい前後5日以上ずれていると表示されない)
TestFlight経由でも、このポップアップは表示されません。
https://developer.apple.com/documentation/storekit/skstorereviewcontroller/2851536-requestreview
When you call this method while your app is still in development mode, a rating/review request view is always displayed so that you can test the user interface and experience. However, this method has no effect when you call it in an app that you distribute using TestFlight.
社内などのテスト配布で
このポップアップを確認したい場合は
プロモーションコードを利用して行えば可能であるようです。
結論(再掲)
SKStoreReviewController.requestReview()を発火させてもポップアップが表示されない場合に考えられる原因は
- 端末の時間を変更している
- ネットワーク通信ができていない
- TestFlight経由である
- レビューを配布テストしたい場合はプロモーションコード経由のテストを行いましょう
「メソッド通っているのに画面が表示されない」と
デバッグに苦しむ前に、思い出して頂ければと思います。