Requesting Reviews with iOS 10.3’s SKStoreReviewController

James Montemagno

Asking your users to review your app is never easy, and there was never an intuitive way to do it. Developers were left to constantly prompt users to review the app with pop ups or by putting a Leave Review button somewhere hidden in the settings, as I have done for many years (here is a quick blog to show you how to do it). Starting on iOS 10.3 this has all changed with the introduction of the SKStoreReviewController, which controls the process of requesting App Store ratings and reviews from your users with a streamlined, in-app dialog. This useful feature is also extremely easy to implement:

if(UIDevice.CurrentDevice.CheckSystemVersion(10, 3))
{
  SKStoreReviewController.RequestReview();
}

Just like that, we get this great looking rating screen:

The MyDriving app using the new StoreKit App Store review APIs.

Important Details

There are some caveats to keep in mind with the SKStoreReviewController, mainly that it isn’t guaranteed to actually show the screen; iOS decide this. On average, it appears the dialog will come up three or four times a year when requesting. As such, you should do some research and only request after your users have used the app for some time. When you’re in development, though, the ability to test the dialog will always be displayed, when your app is in TestFlight it will never be displayed.

Opening the App Store

Finally, this dialog is governed by the App Store policy, which means it should not be called in response to a user action or button tap. This is best reserved for putting in a dedicated Leave Review option somewhere in the app. Apple has updated the mechanism to navigate your users directly to the App Store review page for your app by appending action=write-review to the App Store product URL, as below:

public void OpenStoreReviewPage(string appId)
{
  var url = $"itms-apps://itunes.apple.com/app/id{appId}?action=write-review";
  try
  {
    UIApplication.SharedApplication.OpenUrl(new NSUrl(url));
  }
  catch (Exception ex)
  {
    Debug.WriteLine("Unable to launch app store: " + ex.Message);
  }
}

Learn More

You can read about all of the APIs introduced in iOS 10 and iOS 10.3 on our documentation portal along with a full guide to requesting app reviews with this new mechanism.

0 comments

Discussion is closed.

Feedback usabilla icon