At first SKStoreReviewController looks great: An easy and standardized way to ask users for a review. However SKStoreReviewController only allows the user to rate the app by giving it 1 to 5 stars. But am I supposed to engage the user to leave a written review in the store? Is this possible using SKStoreReviewController as well?
Or do I have to do this manually, e.g. by prompting something like "Thanks for rating the App, would you like to write a review as well"? I doubt that many users would be happy to perform another action after they just rated the app...
Wouldn't prompting for a written review would conflict with Apples guidelines not to prompt the user without using SKStoreReviewController?
Users cannot add a review though SKStoreReviewController.
It is also not possible for you to know if your requestReview() call actually resulted in a rate alert being presented. If the user has already rated the app recently, requestReview() will silently fail. Because of this, it is not advised to perform UI changes relying on the existence of an SKStoreReviewController.
I believe the suggested method for letting users review your app is to add a dedicated "Review App" button that deep links to your app in the App Store. This should be prompted by the user, and not the product of an alert.
To automatically open a page on which users can write a review in the App Store, append the query parameter action=write-review to your product URL.
Related
I have implimented SKStoreReviewController in My app. I just want to know how the functionality works. I need to satisfy below requirements.
I need to disply popup in all the 3 cases
For first 10 successful logins
After every 90 days
I don't want to disply rating popup never if he provide the rating.
How do I know if a user gave the rating and also I need to send
response to server if user gave the rating.
SKStoreReviewController submit button is active after your app is live in appStore. The submit button is automatically disable when you're running in debug mode. It's only active when you're launching your app in appStore. That is not mistake from apple or Xcode.
Thank you.
Apple provides some suggested best practices and sample code for requesting reviews.
In answer to your requirements:
This is definitely not best practice; after 10 successful logins might be a reasonable time to ask for a review, but asking each time the user logs in will probably just be annoying.
Again, asking after 90 days is probably a reasonable interval.
By design there is no indication to your app as to whether the review request was shown, nor whether a review was left.
You can link directly to the App Store page where the user can provide a review, however you still have no indication of whether the user actually left a review or simply cancelled out of the web page.
The sample code I linked to shows how to track whether you have requested a review for the current version of your app. You cannot know whether the user has actually reviewed the current version.
I want ask my users to rate my Unity iOS app using the following code
Device.RequestStoreReview()
But this function returns true when the library is present and false otherwise. I want to know whether the user
Allready rated
Clicked "cancel" or clicked "not now"
So that I don't have to ask that to the user every single session
You can make a custom UI with buttons to check if the user wants to review the app or not. If the user decides to give the review you can open the app store with Application.OpenURL. You can then save user action (reviewed, ask later, don't ask again) as a flag in PlayerPrefs. Use this flag in your app to decide when and how often ask the user for a review.
As far as I know there is no way to check if the user left the review or not but if they decide to go to app store, most will leave the review and even if they don't the app just won't ask them again. It is good enough for me.
This approach is also platform independent (as long as you can use Application.OpenURL you can forward your user to any app store/website for a review).
I am using the SKStoreKitReviewController in 10.3 and above to request a rating of the app. The alert is displayed. However, I need to implement a logic, wherein, if the user has already rated the app for one major release then I should not ask the user again for rating. Hence, is there a way to know that the user has successfully submitted the rating? Also, I would want to know if the user clicked on "Not now", so that I can prompt them again for rating after a few days. Is there a way to know this?
According to this Apple Developer page, you cannot prompt a user more than three times in a year.
Give users an easy way to provide feedback on the App Store without leaving your app using the SKStoreReviewController API. You can prompt for ratings up to three times in a 365-day period.
I want to use the new feature added in 10.3 to ask users for reviews. In the docs, apple states that when this method is called "a rating/review request view is displayed".
I am getting the rating view( where you can select how many stars to rate), but I am not able to write a review. I have to mention that I only tested in simulator.
Is this the correct behaviour?
In development mode the “Submit” button is disabled. Once your app is in the App Store, this button becomes active and the user is given the option to write a review after they hit “Submit”.
On development mode it always displays the prompt but doesn't actually do anything.
If you want to point people to write a review about your app:
To automatically open a page on which users can write a review in the
App Store, append the query parameter action=write-review to your
product URL.
Docs.
EDIT: The comment below is correct.
I would like to build a mechanism to free my in-app purchases for some of my VIP users devices. My idea is I pre-save the UDID of the user devices in my backend server. When the app starts, it will call my server and get the list of udid and check if the device is in VIP list. if yes, directly show full features without any button to ask for in-app purchase.
However, UDID cannot be used anymore. What should I do in this case? I dont want to ask user to enter some codes. because it would disturb my user interface.
new updates of the question:
The purpose is that , I got a list of people that they will review my apps , but i dont want to have any pop up to ask for promo code or any specific UI for these people. So my idea is I ask them to give me their UDID (or whatever number that they can identify themselves for their phone), and I save them in my backend. When they download the app, the app call the backend and compare their identifier number/UDID, see if they are my VIP, and give them full features automatically without asking promo code and any UI specific for these user.
I would like to identify the user only. Do you guys have any solutions?
thanks
You could do something like provide a URL to the users which opens the app and gives the app some parameter(s). When the app receives these details it could show an alert to ask for a name or some other info (like an e-mail address) from the user. Then you can send the details to your server for verification and set some value in the app to enable the features. In this way the UI of the app is not changed.
I think it's not conform with the iOS/App Store TOS (to be clear).
The easy way is to use the UDID but we can't now... You can get another unique "number" for identifying the device like the Mac Address (you can get in in Objective-C, not really simple but you can).
You can add a button which asks for a promo code (maybe the same button to buy the in-app upgrade). Only those who have a promo code can get the upgrade for free.
Also, should it be "VIP users" rather than "VIP user devices"?