Analyzing how users are prompted to review iPhone apps, it seems that our apps are more likely to get negative reviews. Here’s why: a user is prompted to rate an app when he deletes it. When the app is deleted, it is pretty safe to say that the user was not satisfied with it, so the review will be a negative one. That’s ok, if the app is not good enough, other users should know that. But what about the good/great apps, the ones that you use successfully and don’t delete. Shouldn’t you be encouraged to leave a review in this case too? That review would probably be a positive one, or at least constructiv (you might say what you would like to see improved).
Read on to learn how we solved this and get the full source code to add this feature to your own app!
Why not invite the user to leave a review for your app, after 10, 20 or 30 days of use? An alert will pop up, similar to the image above, and the user will have the options to go to the App Store in order to leave a review, hide the alert temporary or permanently.
After how many days should you show this alert?
If you’re publishing a new app, more days is probably better than less. Our class defaults to 10 days, which we find to be a good compromise. Choosing fewer days might get you more reviews, but if someone is still using the app after a couple of weeks, it is a lot more likely that he will leave a 5 stars review.
If you’re publishing an update to your app, you can have the pop-up shown at the very first launch, because people updating will be likely to leave a positive review. If you know your app has a good user base, then you can bet on your loyal users because first time users would be more likely to just dismiss the dialog.
Let’s see now the technical part. The good news is that you can add this to your project really easy: add the following Objective-C class, ReviewsAlert, to your project, and include this line of code in your applicationDidFinishLaunching method:
[ReviewsAlert showReviewsAlert];
You should also modify the reviews URL (put the id of your app); line 59 in ReviewsAlert.m:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=307757516&pageNumber=0&sortOrdering=1&type=Purple+Software"]];
You can change the number of days on line 39:
int daysToWait = (3600 * 24) * 10; // 10 days
NSUserDefaults class is used to store the initial date (when the user first ran the app). Every time the app is launched, we substract that date from the current date and calculate if the required number of days passed already.
NSUserDefaults is also used to store boolean variables like reviewsAlertBanned (set on YES if the user tapped Don’t ask again) and userDidRate (if the user tapped Go to the App Store).



App submission changes
iPhone 4 reception issue: myth or fact? Design flaw or software issue?
How to build and submit a Universal App for distribution on the App Store with the iOS 4 SDK
Microsoft Pink smartphone project: KIN gets killed
Radu, this is a great post!… I’m sure many fellow developers will find this to be a life saver :)
[...] check how we solved this issue and get the full source code to add this feature to your own app! Share and [...]
Radu, this must be one of the most useful blog posts at Surgeworks Blog so far, including the Mauro’s latest post about monetizing free apps.
Good job mobile team :)
Thanks guys! I hope some developers will use the code.
Great post. I’m using on my apps.
Thanks you! Great idea!
Hi,
Great article for the iphone developers. Just want to know, is the code using any private API of Apple?
Cheers,
Mag
@Mag, No worries: the code is running on our apps that are now live on the App Store and does not use any private API. Thank you!
Hi Mauro,
Many thanks for reply. I need to know further that is it possible to show the “Rating / Voting Popup” which is shown while deleting the app within my app? That is, I want to have the “Rating Popup” within my app and submitting the Rating without closing my app.
Thanks in advance.
Cheers,
Mag
@Mag, as far as I know, the App Store has no public API to do something like that, so that is not possible.
Thank you! Thank you! Thank you!
This is a great idea and thanks for the code!