KjellConnelly / react-native-rate

Send your app users to Apple App Store, Google Play, Amazon, or other using the newest APIs
635 stars 100 forks source link

About SKStoreReviewController #22

Closed mezod closed 5 years ago

mezod commented 5 years ago

I read in the docs:

"Users can only rate the app 1-5 stars. They cannot write a review."

Afaik, iOS default (native) rating first pops-up a 1-5 stars rating, and after you rate, you are allowed to write a reply. I understand this is the default SKStoreReviewController behaviour. Is this not the case here?

I also take this opportunity to ask if you could define better what "a cross platform solution to getting users to easily rate your app." means. I know it's petty but, what exactly will the outcome be? Is this just a link to the app store/google play review section, or there's some sort of rating pop-up for android too (similar to SKStoreReviewController for iOS)?

A few words on how would you normally use this lib would be appreciated, as in: Just a link in the menu saying "Review this app!" or something more intrusive based on behaviour (even if it's showing the SKStoreReviewController just once after a certain progress is achieved.

Thanks!

KjellConnelly commented 5 years ago

Hi mezod,

Thanks for the typo correction. Not on my computer now so I’ll merge it later.

I wasn’t aware that you could write a review using the SKStoreReviewController as I’ve actually never rated an app that way before lol. I’ll update the docs to reflect that.

I’ll also do a summary of how this module should be used and what exactly happens when you call the rate function to address your concern.

mezod commented 5 years ago

Thanks @KjellConnelly! Especially for the prompt response.

Done some more research. About the expectations for the API being changed by apple: "It is impossible to know whether or not a user has rated an app, to prevent ratings from becoming a currency (some developers might add an option like "Rate this app and get so and so in the app for free"). " Makes sense why they wouldn't.

About SKStoreReviewController, I've just been confirmed that after the 1-5 stars view, if you rate, the same prompt gives you the option to Review (it apparently is an extra parameter option of the native api?).

I'll just share how I intend to use this lib, correct me (please ;D) if it sounds wrong (or I misunderstood the docs):

  1. I want to have an option to "Review this App" on my menu:
    • On iOS: I'll call the SKStoreReviewController prompt, but if it apple decides not to show it*, I'll fallback to a link to the app store. So I'd use Example6, but with openAppStoreIfInAppFails:true.
    • On Android: I'll call this lib, which I understand will redirect users to the GPlay review section.

*How exactly can you know if the prompt's been shown or not? What does the hack involve?

  1. I want to have a prompt shown after a few interactions with the app to appear at least once after a successful interaction.
    • On iOS: Say the user makes action TRIGGER, I call this library with exactly example 6. If apple shows the prompt, good, if apple decides not to show it, then I don't want the user to notice at all, thus setting openAppStoreIfInAppFails to false. Regarding this, there's a callback to know if the user has been redirected to the Store Review (independently of if they did review). Does this callback work exactly the same way to know if the SKStoreReviewController prompt has been shown? In other words, in order not to spam users, it would be nice to store if X user has already been shown the prompt in order not to call this library again after a user makes certain successful action.
    • On Android: I'd make my own prompt (I understand this lib doesn't provide it, yet ;D) asking for a review with a button that'd call this library. Obviously, I'd store that it's already been displayed and not show it ever again.

Just one last thing, if openAppStoreIfInAppFails is set to false, why do we still need to set a delay time? (Referring to Example 6)

  1. There's a callback to know if the user has been redirected to the Store Review (independently if they did review). Does this callback work exactly the same to know if the SKStoreReviewController prompt has been shown? In other words, in order not to spam users, it would be nice to store if X user has already been shown the prompt in order not to call this library again after a user makes certain successful action.

Thank you a ton and I'll understand if you completely disregard this message, I'll still appreciate you wrote the lib, thanks!

KjellConnelly commented 5 years ago

@mezod I updated the README to reflect some of the missing info. Let me know if there are any other missing topics you would like to see shown :) And thanks for the help!

mezod commented 5 years ago

Thanks a lot for your time Kjell! Before you close this issue, I just wanted to confirm that Android allows devs to reply reviews too :) Cheers!

KjellConnelly commented 5 years ago

Cool cool! Thanks mezod! I'm gonna close this now. Added that tidbit about Google Play allowing it (I also googled that amazon allows replying as well, so added that too).