Developers MUST use Apple's API to prompt user rating & review

Just say this news today http://bgr.com/2017/06/09/apple-ios-app-reviews-annoying-update/

Apple made a change to its App Store Review Guidelines, “…use the provided API to prompt users to review your app; this functionality allows customers to provide an App Store rating and review without the inconvenience of leaving your app, and we will disallow custom review prompts.”

Are we all going to be facing rejections soon because of this? 

Ben. 

Hi Ben,

In specific, which API/feature would you be calling in Corona to face potential rejection?

Brent

@brent I think the OP means is this

“Use the provided API to prompt users to review your app; this functionality allows customers to provide an App Store rating and review without the inconvenience of leaving your app, and we will disallow custom review prompts.”

In other words does **native.showPopup(“rateApp”, settings) **comply with the new Apple legislation or are core changes needed?

Hmmm… I vaguely remember some issue with that a few years ago, but I don’t recall the context. We removed the “rateApp” option from that API’s documentation, which must have been for a specific reason (again, I can’t remember the context at the time). I seem to recall it worked but had some unpredictable flaws.

In any case, to be fully compliant, you should start using Scott Harrison’s “Review Popup” plugin for iOS app ratings.

https://marketplace.coronalabs.com/plugin/review-popup

Hope this helps,

Brent

@brent? rateapp is working just fine even if the docs do not reflect this.  Scotts plugin is for iOS 10.3 but what about iOS 10.2 or android or amazon?

Mega confused now

Based on the article it sounds like you have to use this api https://developer.apple.com/documentation/storekit/skstorereviewcontroller Which is what this plugin is https://marketplace.coronalabs.com/plugin/review-popup The person writing this article could me misinterpreting what Apple said. But if the article absolutely right it sounds like you have to use it. I don’t have any apps to test this with but I am waiting to hear from some developer guinea pigs. This article did not make it clear about what to do with 10.3 user.

We’re doing research into this now. It doesn’t seem likely (or even possible) that Apple can enforce a feature only available on 10.3, when users have devices still running versions of iOS much older.

The possible misinterpretation (of the article) is that, it seems, they will be restricting variations of “custom” UI or URL redirection methods that don’t end up using one of the Apple methods, whether that be the traditional popup for ratings, or the newer in-app ratings feature.

I’ll update this thread as I narrow down the correct answer…

Brent

@Scott & Brent, my info was from https://developer.apple.com/app-store/review/guidelines/ specifically point 1.1.7

Not sure on the ramifications to core though with that clause? 

If Scott’s plugin uses the new API and doesn’t break older versions (or the API will gracefully fall back on iOS 10.2) then I suggest his code is included into core.

I have some information on this.

So basically it appears that Apple wants to control the presentation of rate dialogs going forward. Before you ever get a chance to call our native.showPopup() API you have to present something to the user to ask them if they want to rate your app. Our popup doesn’t ask that question it just opens the App store app and takes you to your app’s page. 

There is currently no Apple provided API to ask a user to rate the app pre-10.3. In 10.3 they have added a new API called “SKStoreReviewController”. I believe that Scott Harrison’s “Review Popup” calls this controller (https://marketplace.coronalabs.com/plugin/review-popup).

Since Corona builds with 10.3 and this plugin is available you should be able to meet Apple’s new requirements. However, things get a bit weird pre-10.3. I tried to run an app on a 9.3 device today that call’s Scott’s plugin. It seems to ignore the call to his .show() method. It works expected on my 10.3.2 iPhone. 

I don’t see how Apple can reject you since OS’s other than 10.3 are supported and 10.3 is the earliest OS where you can even begin to use SKStoreReviewController. I’ve not heard of anyone being rejected yet. 

Anyway, if you do get rejected, you have a path forward using Scott’s plugin. It’s currently free though he could change it at some point.

We plan to discuss this in the team meeting tomorrow, but perhaps the best thing to do for now is put in a test in your code and if you’re on an iOS 10.3+ device, show Scott’s plugin, if not show your current rate me dialog calling our popup to get you to the store. 

Now as for if our showPopup(“rateApp”) “works” is open to discussion. It does not call an error and the app store app is loaded to your app but it does not take you to the “Review and Rate” page, which it used to do pre-iOS 7. So “appStore” and “rateApp” are in effect the same thing. Some would argue that’s broken :-) 

We will let you know more when we know more.

Rob

Just to be clear I have no “current” plans. It does not make much sense to charge money for one simple api call.

Thanks for that Scott!  

Thanks Rob for the clarification. 

+1 Scott!!!

Ben

Read this:

https://developer.apple.com/documentation/storekit/skstorereviewcontroller/2851536-requestreview

While you can’t pop up a custom rate dialog, you can still have a link directly to the review app page in the app store, when the user elects to review your app with a button tap. 

Note that the Corona-supplied showPopup(“rateApp” ) does not have the &** action=write-review** parameter so it just takes you to the app store page.

As of 10.3 (and maybe earlier 10.x), you can use this snippet to go directly to the review page:

local rateURL = "itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=" .. YOUR\_APP\_ID  .. "&onlyLatestVersion=true&action=write-review&pageNumber=0&sortOrdering=1&type=Purple+Software"            system.openURL(rateURL)

Thanks @Studycat2. This is very helpful information.

Rob

@Rob is there any chance of including this in a daily build?

Eventually. Engineering is aware of the issue, though I need to share some new info with them. They’ve agreed we need to fix it, so now its just a matter of working it into their priorities.

Rob

Was wondering if anyone knows if there is a way to determine if a user actually submits a review. I’m guessing no, but it would be great to know for sure. This is so that an app would be able to stop requesting a review once submitted.

Apple will only show the review box when Apple wants to show the box. It’s limited to a few times per year. Once the user rates/reviews then they won’t get it again though perhaps after an update, it may show again. During testing it shows every time you call it. After it’s live, you code basically gives iOS permission to show it at that time.

Rob

Any update on this? Hoping for an easy solution where I can just use the **native.showPopup(“rateApp”, settings) **call and it automatically checks which iOS version and if 10.3 or later, uses the new in-app rating functionality.

Also, is there a way to both rate and/or review without exiting the app?

  1. My review pop up plugin still works, https://marketplace.coronalabs.com/plugin/review-popup also my store view plugin https://marketplace.coronalabs.com/plugin/store-view

  2. I don’t know if corona will integrate this into API? It seems pointless in my opinion. The rate app pop up ~= review pop up, the review pop up should not replace rate app pop up in iOS 10.3+ because some developers might want to use the rate app pop up.

  3. see 1.