Use SKStoreProductViewController or SKStoreReviewController to rate / review an application?

There are many articles on SO that SKStoreProductViewController disables the Write Review button. However, all of these articles are SO notable, and apple docs for SKStoreProductViewController do not mention this limitation.

When testing in iOS 9.3.2, the button did not appear to be disabled, but nothing happened when I clicked on it, which not only confuses developers, but also users, and this does not seem to be correct.

It is also true for iOS 9 that

  • is the only way to direct the user “closer” to the application’s review page - to open the App Store application, previously downloaded to the application’s product page?
  • Can't do this without leaving the application?
  • Impossible to directly redirect the user to the review page, only to the product page?

Update for iOS 10.3 +

The accepted answer explains the difference between SKStoreProductViewController and SKStoreReviewController for use with rating / review of the application. The initial question was written before the introduction of SKStoreReviewController .

+8
swift app-store storekit
source share
2 answers

Apparently, SKStoreProductViewController intended only for purchasing applications in the App Store, and not for viewing products. This can be implicitly understood from Apple docs :

The SKStoreProductViewController object is a repository in which it allows the user to purchase other media from the App Store. For example, your application may display storage to allow the user to purchase another application.

As long as this limitation exists, the only workaround is to deeply bind to the App Store app, for example.

 let url = NSURLComponents(string: "itms-apps://itunes.apple.com/app/id\(yourAppleAppId)")! UIApplication.sharedApplication().openURL(url) 

Update for iOS 10.3 +

SKStoreReviewController allows users to evaluate the application directly from the application through a dialog box. The only downsite is that you can only request StoreKit to display a dialog box, but you cannot be sure what it will be.

Tells StoreKit to ask the user to rate or view your application, if necessary.

SKStoreReviewController

Keep in mind that Apple is likely to abandon user app ratings and reviews in the near future with the introduction of SKStoreReviewController . Application Validation Guides say:

Use the provided API to invite users to view your application; this functionality allows customers to provide ratings on the App Store and browse without inconvenience, leaving their application , and we will prohibit user checks.

The current drawback, and probably the reason that user validations are allowed, is that Apple has not yet provided an API to get review metrics and send responses to written reviews. The only current solution through iTunes Connect that is not practical for large scale and performance requirements in customer service environments.

+12
source share

What you are looking for is

 import StoreKit func someFunction() { SKStoreReviewController.requestReview() } 

but it has just been released with 10.3, so you still need some fallback method for older versions as described above.

+3
source share

All Articles