Is there any way to check if SKStoreReviewController.requestReview() is going to be processed?
Asked Answered
C

1

9

I would like to show the following popup: "Are you enjoying the App?"

If yes - then show the inbuilt Apple's review request via SKStoreReviewController.requestReview()

If no - then re-direct the customer into support chat to get their feedback in a private two-way conversation

But unfortunately requestReview() call doesn't guarantee that popup is going to be shown to the customer and sometimes it doesn't. I didn't find any way to check if it's going to be shown if I call it now. Then look what happens when customer taps "Yes" - in some % of cases I'm missing a 5 star rating opportunity and who wants that?

Is there any way to check if requestReview() is going to show a popup?

To summarize the desired flow:

  1. Check if requestReview() is going to show the review request
  2. If no - show nothing to a customer and exit. End. Try later.
  3. If yes - show custom popup "Are you enjoying the App?"
  4. If customer chooses yes - request review via Apple's builtin requestReview()
  5. If customer chooses no - redirect to support chat to resolve the issue and avoid bad review

Thank you for any ideas!

Castrate answered 4/12, 2019 at 19:25 Comment(8)
There is no callback for if it will or will not present. I suspect you could check the UI stack to see if it was presented or not after you request that it presents thoughCausative
@DanielStorm thank you for inputs! the thing is that I wouldn't like to show the custom popup at all if requestReview() is going to do nothing. Custom popup goes first (and only if review can be requested at the moment, and then I need to call requestReview() if customer has selected "yes, I'm enjoying the app"Castrate
I see. This is not possible unless Apple exposes that. I’d suggest submitting a feature request.Causative
You could also continue with your normal flow. Check if the alert is in the UI. Then, if it’s not open the App Store directly to your application. Comes down to if you value keeping the user within your app or getting the review more I suppose.Causative
@DanielStorm oh...that's not good. I've seen some apps are doing it somehow but maybe they've just investigated the algorithm behind requestReview() or feeling lucky. I'm asking for a review after all today's tasks are already done (it's kind of todo app) so it's not too bad to leave the app and write a review (at least it seems not too bad). Thank you for the idea with UI stack!Castrate
I've created a feature request for the following requirement: FB7479475Castrate
@AlexanderStepanov how did you address this in your app? I am in the same situation.Mcglynn
@RohitSingh it's not handled yet, I'm just using requestReview() without extra promptsCastrate
E
6

It is not possible to check if requestReview() will actually result in a Review Request.

Also remember that the user can disable requests for reviews from ever appearing on their device, so you should avoid referring to your app showing this prompt and never request a review using requestReview() as the result of a user action.

https://developer.apple.com/documentation/storekit/skstorereviewcontroller/requesting_app_store_reviews

and

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.

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

Emelun answered 4/12, 2019 at 20:12 Comment(2)
Thanks! Also seen these statements some time ago, thought that it may be improved after some time but looks like it's notCastrate
I would like to present the request up to 3 times per release (after a suitable number of times the user has used certain features of my app) but stop presenting the request if the user has already provided a review. Does the "store policy" which controls whether to show the request take this into account? I.e., if I request a review but the user has already provided a rating or review will the RequestReview() call be smart enough to not ask again? The documentation refers to "store policy" but I have not been able to find "store policy" spelled out anywhere.Burris

© 2022 - 2024 — McMap. All rights reserved.