Why the Skstorereviewcontroller Does Not Let Me Submit a Review

Why the SKStoreReviewController does not let me submit a review?

Apple provides the answer for you right here.

When you call this method in your shipping app and a rating/review
request view is displayed, the system handles the entire process for
you.

Emphasis mine.

To help clarify this some:

  1. When building in Xcode, you will see what the OP shows in the screenshot
  2. When building from a CI solution for release, you will not see anything
  3. When running from TestFlight, you will not see anything
  4. When running from the AppStore, only users who purchased (free or paid) your app will see it up to three times a year
  5. When running from the AppStore, users who obtain your app via Connect promo codes will not see it
  6. Users who disable In-App Ratings & Reviews under iTunes & App Stores in the Settings app will never see these prompts under any condition

Apple spells out point 3 here on the provided link:

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.

And for point 5, here is what Apple has to say on it at the provided link:

However, customers aren’t able to rate or review an app that was
downloaded using an iTunes Connect promo code.

So sorry, you can't pad reviews via promo codes ;)

SKStoreReviewController not working

It is only enabled after the app is downloaded from the app store.

During development, or even release build, it is grayed out.

SKStoreReviewController requestReview doesn't prompt for review

In development mode the “Submit” button is disabled. Once your app is in the App Store, this button becomes active and the user is given the option to write a review after they hit “Submit”.

SKStoreReviewController.requestReview() not working in Live App

From the documentation:

Although you should call this method when it makes sense in the user experience flow of your app, the actual display of a rating/review request view is governed by App Store policy. Because this method may or may not present an alert, it's not appropriate to call it in response to a button tap or other user action.

(Highlight mine)

If you have a Ratings Button like you said in your question, you should not expect it to show the prompt.

The prompt will only show up if:

  1. The user hasn't disabled Review Prompts in Settings.
  2. The prompt has been shown to the user 3 times or less in a year.

If you must request a review upon user interaction, you must direct your users to the App Store page of your app instead, using code like this (taken from Requesting App Store Reviews Sample Code):

@IBAction func requestReviewManually() {
// Note: Replace the XXXXXXXXXX below with the App Store ID for your app
// You can find the App Store ID in your app's product URL
guard let writeReviewURL = URL(string: "https://itunes.apple.com/app/idXXXXXXXXXX?action=write-review")
else { fatalError("Expected a valid URL") }
UIApplication.shared.open(writeReviewURL, options: [:], completionHandler: nil)
}

Is SKStoreReviewController helpful in writing a review?

The Submit button of the prompt of requestReview() will redirect you to the Write a Review page of the app, with the stars section already filled out. You can optionally enter a title and a detailed review there. (The description text is misleading, the title is optional.)

From the Ratings, Reviews, and Responses - App Store page of Apple Developer:

Users will submit a rating through the standardized prompt, and can authenticate with Touch ID to write and submit a review.

"Write a Review" page with filled out stars



Related Topics



Leave a reply



Submit