Every iPhone developer fears the one-star-on-uninstall rating. I understand Apple’s reasoning for adding the prompt for rating on uninstall, but since that’s the only time users are prompted, it becomes a very biased, negative rating. There may be hundreds of users happy with your app who never rate it on iTunes, but everybody who uninstalls it gets asked to give it a review. That’s quite unfair from the developer point of view.
First one bit of good news: That prompt-on-delete feature seems to be gone on iOS 4.0. That should make everybody happy. Even so, taking a pro-active position on this can only benefit developers.
Next a personal opinion without any real hard data to back it up: I don’t think App Store ratings matter very much. I see plenty of quality, 5-star apps that never go anywhere, as well as horrible apps with close to 1-star rating on the top 10. I’m sure good ratings help a bit, but not as much as some people may think.
One of the little features I snuck in the latest update of Flower Garden, was a prompt to rate (or re-rate) the app. This idea isn’t new, and I’ve seen quite a few apps doing it already. I think it makes a lot of sense and provides rating that is much more balanced and representative of how users feel about the app.
You have to be careful about how you prompt users though. This are the priorities I had in mind when I implemented the rating prompt in Flower Garden, roughly in order of importance:
- Don’t be annoying!
- Disrupt the user as little as possible
- Make rating the app as easy as possible.
- Prompt at every update.
Don’t be annoying
This is by far the most important priority. If your prompt for review is annoying, you might get more angry users and one-star reviews than you would have without it. Be respectful of the user and don’t nag.
For quite a few versions, I’ve had a review button in the “Feedback” tab in the settings screen. Not many people use it or even know about it because it was several taps away from the normal flow of Flower Garden. That’s an example of a feedback prompt that is too unobtrusive. Clearly, I needed something a bit more noticeable.
What I did was to add an actual alert view with the prompt. That alert comes up very infrequently, and gives users the option to either rate it right away, be reminded later, or just stop asking altogether. Many more users rated the app through this mechanism (and I haven’t gotten a single complaint about it being annoyed yet–keeping my fingers crossed).
Disrupt the user as little as possible
First of all, you should never ask the user to rate the first time they launch it. They haven’t had a chance to check it out yet! Give them a few days (or a few launches of the app). That will benefit you in two ways: users will have a better chance to give an honest rating, and users who didn’t like your app probably won’t be around in two days, so they’ll never see the prompt.
Second, choose a good time to ask. Please, don’t ask me as soon as I launch the app! Chances are I want to do something with it, so being pestered with a review prompt is disruptive, especially because adding a rating involves leaving the app and going to iTunes. At the same time, don’t ask me in the middle of a level or when I’m engrossed in game. A good moment to ask for a rating would be after completing a level or two, or, in the case of Flower Garden, after sending a bouquet.
For extra bonus points, catch the user on a “good” moment. Maybe only ask them to rate the app if they actually beat the level. They’ll probably leave a better review than if they just lost and are in a bad mood.
The exception I made was if a certain amount of time went by and the user never got to the point of being prompted (some people just don’t send bouquets in Flower Garden). In that case, I will ask at startup or at some other, non-ideal point.
Make rating the app as easy as possible
This is the funnel principle at work. For every action the user has to do in order to leave a review, the fewer users will actually do it. It would be ideal if users could rate the app directly from the alert box. That would involve no extra actions (or leaving the app) and would result in the maximum number of ratings [1]. Unfortunately, that’s not the case, so we have to do the best we can with what we have.
So we want to minimize the amount of actions from the moment the user taps “Rate now” until they can enter the rating. We could send them to the product page on the App Store, but that would still involve them scrolling around, finding the rating button, tapping it, and entering the rating. We can do better than that: We can send them directly to the rating screen. Check out this great post for a dissection of iTunes links and how to create one to the review page. Make sure the technique you choose works on an iPhone (not all of them do!).
Prompt at every update
This one is easy: Just store the number of the last version the user wrote a review for, and if it changes, start from scratch again. That way you don’t have to write any custom code at every release. Also, make sure to respect the “Don’t ask anymore” option if the user selected that in a previous update.
Source code
Here’s the review request source code (released under the MIT license). It consists of only two standalone files, and all the review state is kept in the default, global settings. There are only three functions and it should be very self-explanatory:
bool ShouldAskForReview(); bool ShouldAskForReviewAtLaunch(); void AskForReview();
The ShouldAskForReviewAtLaunch() function simply adds an extra condition of launching it X number of times before asking for review (this is in case the user never triggers the review condition).
Results
Does this prompt for ratings work? This is a screen grab from iTunes 5 days after Flower Garden 2.4 was released:
A few interesting observations:
- Ratings are higher than they were before. Before the free day, Flower Garden had an average of 3.5 to 4 stars.
- Reviews are often shorter and less useful than unprompted reviews. There are a lot of 5-star “I love this app!” reviews without much more substance. (I’m not complaining, really).
- Still a huge number of users chose not to leave a review. There are only 148 ratings, but there have been 30,000 upgrades to the latest version. A lot of people might have upgraded and not launched it, but even so, it’s a very small percentage.
Overall, it was a very small time investment and the results show it was definitely worth it. I’ll be using this approach in my future projects (unless future iOS versions take care of it automatically somehow).
[1] Apple, can we fix that? How about a REST API for leaving ratings and reviews? Pretty please?
The only problem with a REST based review API is that it would be trivial to misuse it and have an App review itself with 5 stars every time it launches. Even if you threw authentication into the mix, the app could pesist your credentials and then vote later, or prompt with a 404 whilst changing your review.
So it’s a nice idea but can’t see it happening.
The post does make several very good points though – thanks!
Alex
Good point, Alex. They could still provide some API that uses the user’s iTunes identification (hopefully already cached from IAP or using the App Store app). Somehow, I don’t think that’s a priority for them though, so I’m not holding my breath.
Asking for 5 stars is a bit much, IMHO. I can see how that actually causes a backlash, but apparently it didn’t far you.
When I saw the alert in Flower Garden I thought for a moment giving 3 stars instead, but I gave it 5 stars anyway 😉 I must have been sub-consciencely primed.
I have an alert popup as well, but the amount of people that actually write a review is very low. Now is writing a review on an iPhone not really fun, so I can see why. And the link to the review form on the main app page is a bit hidden. I had my “Please review” code go straight to the review page, but for some reason that page on the phone felt a bit too bar, since the app name isn’t even mentioned. So I changed it and it now goes to the main app page.
That was easy since my “Please review” alert is adaptable from a distance (Uh Oh, is that interpreted code?!?) so I could change the link when Apple changes and breaks things (as happened in the past). But I also can change the title and text. I just changed it to resemble your text more, I hope you don’t mind. I do ask for “lots of stars” without prescribing 5.
Hope it makes a difference.
Mare, you’re right. It’s a bit of a stretch to ask for 5 stars and I almost phrased it differently. In the end I decided to go this way. It’s a bit less of a “real” rating and more of a voting system. The implied statement is “the more 5 stars we get, the more likely free updates will keep coming”, which is true to a certain extent.
The correlation with high-star rating and people liking the app is still there, so it’s definitely meaninful, just skewed towards more stars. I guess that evens out the rate-on-delete 🙂
But where you get the ID number if you did not submitted the app yet. submitting without binary, to get the ID? or you just included this feature in an update?
Thanks for sharing .
I added this feature in an update, but you can also do it if it’s the first time. The easiest way is to “submit” the app, but check “I’ll upload the binary later”. That will add the app to iTunes Connect with the ID. Now you can use that in your code, and then submit it.
Or you can instead send the link to your own server, and then forward it to whatever you want. That way you can update the link after the app has been submitted.
It is not so bad the review on uninstall if every app has to go through it, I mean, if one app is better than the others it will do better on uninstall review then the others. On the end of the day people will be comparing uninstall leveled reviews.
Maybe who really is worst off is Apple because they get biased bad reviews for all apps with this system, with makes their platform look worst then it really is.
It doesn’t seem to compile for me. Is there a special get info setting in Xcode for these files?
Tks
Jimbo, no, they should compile as is (as far as I know). I’m using SDK 3.1.2 in case that matters. What’s the error you’re getting?
ReviewRequest.h:4: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘ReviewRequest’
Should the filetype be set to obj.c?
thanks
Ah, you’re probably trying to include it from a .m or a .c file and it’s bailing at the namespace. Either get rid of the namespace, or make sure you compile your files with the C++ (or ObjC++) compiler. That should do it.
Hmm … tried the C++, ObjC++ and removing the namespace. Same problem. Anything I should put in place of the namespace? Apologies – bit of a novice! thanks
I’m afraid I can’t tell without seeing the code. First, just try compiling the .mm file by itself and make sure that works. Then try to compile other files that include the header file and take it from there, one step at the time. Sorry I can’t be of more help.
They compile OK on their own. Include from an mm file and I get the error. I just created a blank windows based app in Xcode, added your two files, included in the app delegate – triggers the error.
Thanks for this info. I really think this approach is great. I am a game developer and use the Unity3D engine for my work. Would it be OK if I adapted your code such that it functioned as a Unity3D in-game plugin so that all Unity game developers can benefit from it as well?
Hi Ray, Glad you find it useful. Definitely, go for it and create a Unity plugin. That way more developers can use it.
I’d love to get a copy of this as a unity plugin! Cheers Ray :)!
Thank you very much Noel for that compact solution every customer asks for at some time in a project 😉
You included the texts for the alert box without NSLocalizableString(…) and I checked and found that you didn’t internationalize Flower Garden. You should desperately think about localizing Flower Garden to other languages than english. There is a huge market here in Germany for example.
It’s not much work and I know a small company in Berlin that specializes on internationalization of apps. Contact me if you’ve got questions regarding this.
Great article – thanks.
When using this method for displaying on a landscape-oriented device, the message disappears.
I can move the buttons down to give it room, and resize the alert to fit in the relocated buttons, but no message!
Any thoughts?
Hope this may help you. Check this out..
[url=http://fiverr.com/appthinker/promote-your-freeapp-by-giving-20-five-star-ratings-in-us-appstore]I will promote your FreeApp by giving 20 five star Ratings in US AppStore for $5 on fiverr.com[/url]
I got 20 5star reviews with this guy. I posted this here so it may help you out.
Good solution. Thanks a lot!
Nice article!
iPhone app marketing in the App
store is the next big thing:
Positive customer reviews and
ratings are the most important once you release an app, since most people look
at those things first.
iPhone App Marketing services like the one linked provide this
additional boost to app sales cheap and fast.
It really helps with increasing
sales and customer perception!
Hi noel, i´m a newbie in xcode.please can you tell me how to import to my running project?thanks a lot
It didnt work anymore..
Is there any software or any kind of tool which helps to get the Ratings Automatically.
You can buy some good reviews and ratings in http://www.bestreviewapp.com, people prefer to download the apps with good reviews and ratings.
There are many was that can be used to get more app reviews and ratings…you also can buy these all things for your android app and ios you can visit this website http://www.app2ratings.com they are selling reviews and ratings
yes increasing popularity getting trend and it can be use via many apps and you can use facebook to do this task for you you can get facebook likes and then promote their your app.
Things have changed quite a lot over the last five years! Our latest research shows how important it is to ask for ratings at the right time and in the right manner, and how that is now possible. Check out our take on the subject on our blog! https://polljoy.com/blog/improve-app-store-rating
Tips that you subscribe, Noel, don’t work any more. Just to stay tuned you can read our blog. Especially this article http://app-reviews.org/15-ways-to-help-your-app-climb-the-ranks-in-itunes/ with quality advices for your app promotion