April 20th, 2017

Requesting Reviews with iOS 10.3’s SKStoreReviewController

James Montemagno
Principal Manager, Tech PM

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.

Author

James Montemagno
Principal Manager, Tech PM

James Montemagno is a Principal Lead Program Manager for Developer Community at Microsoft. He has been a .NET developer since 2005, working in a wide range of industries including game development, printer software, and web services. Prior to becoming a Principal Program Manager, James was a professional mobile developer and has now been crafting apps since 2011 with Xamarin. In his spare time, he is most likely cycling around Seattle or guzzling gallons of coffee at a local coffee shop. He co-hosts the weekly development podcast Merge Conflict http://mergeconflict.fm.

0 comments

Discussion are closed.

Feedback