Help us understand the problem. What is going on with this article?

SKStoreReviewController.requestReview()を通っているのにレビュー依頼画面が表示されない時のチェック事項

More than 1 year has passed since last update.

最初に結論

SKStoreReviewController.requestReview()を発火させてもポップアップが表示されない場合に考えられる原因は

1. 端末の時間を変更している
2. ネットワーク通信ができていない
3. TestFlight経由である

レビューを配布テストしたい場合はプロモーションコード経由のテストを行いましょう

概要

iOS 10.3以降で使える
Appleが公式で用意しているレビュー訴求用のAPI
SKStoreReviewController

表示するのは非常にカンタンで以下のように一行書くだけです。

ViewController.swift
import UIKit
// ↓これをimport
import StoreKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // これで発火
        SKStoreReviewController.requestReview()
    }
}


このように表示されます。
IMG_7434.PNG

この画面は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()を発火させてもポップアップが表示されない場合に考えられる原因は

  1. 端末の時間を変更している
  2. ネットワーク通信ができていない
  3. TestFlight経由である
  • レビューを配布テストしたい場合はプロモーションコード経由のテストを行いましょう

「メソッド通っているのに画面が表示されない」と
デバッグに苦しむ前に、思い出して頂ければと思います。

s_higeru
eversense
家族を幸せにすることで、笑顔溢れる社会をつくる。
https://eversense.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away