Fighting Back Against The App Store’s Negative Rating Bias

by Dan Grigsby on July 14, 2009 · 37 comments

Apple makes it easy to rate an apps during an uninstall by popping up an alert-box and asking for a star rating. This is, in fact, the easiest way to provide feedback. Absent an uninstall, a user must first launching the app store and then navigating to the app before providing a rating. Consequently, the App Store has a bias towards negative ratings.

Some apps — including the New York Times app — prompt frequent users to positively rate the app as a counter-measure to this negative rating bias. This article investigates how to pick the right users to prompt for a rating and includes simple sample code to ease collecting reviews.

Picking Positive People

People who use your application over an extended period of time are most likely to provide a positive rating. Some evidence to support this:

An analysis of 30-million app downloads determined that around 80-percent of free apps and 70-percent of paid apps are effectively abandoned by their second day on the device. After a month, more than 95% of the users who’ve installed an app no longer use it.

Long-term use implies positive feelings. People who don’t dig your app will abandon it. So, the question is, at what point should you prompt a user for a review?

To some extent, you’ll have to trade volume for quality. Ask too early and you risk negative reviews; wait long enough and the review will almost certainly be positive, but there won’t be many of them.

For a new app, I’d favor a larger number of ratings — particularly given the evidence that having 20 or more reviews seems to drive sales — and ask after 10 days. After the app is established, I’d start to favor higher ratings by waiting longer, seting the bar at around a month.

If your app is a game — or has some other obvious “woot!” moments — consider opportunistically prompting for a rating when they make some feel-good achievement like a high score.

Code

Prompting a user to provide a rating is straight forward: using the User Defaults system, we’ll record the date of the first launch. When the user crosses an installed-age threshold, we’ll ask for a rating using alert-view and — with their permission — take them right to the app’s page in the Store to enter a rating.

To prompt the user for a rating after the app’s been installed for 10 or more days add the following code the viewDidLoad method in its main view controller:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

if (! [defaults objectForKey:@"firstRun"]) {
	[defaults setObject:[NSDate date] forKey:@"firstRun"];
}

NSInteger daysSinceInstall = [[NSDate date] timeIntervalSinceDate:[defaults objectForKey:@"firstRun"]] / 86400;
if (daysSinceInstall > 10 && [defaults boolForKey:@"askedForRating"] == NO) {
	[[[UIAlertView alloc] initWithTitle:@"Like This App?" message:@"Please rate it in the App Store!" delegate:self cancelButtonTitle:@"No Thanks" otherButtonTitles:@"Rate It!", nil] show];
	[defaults setBool:YES forKey:@"askedForRating"];
}

[[NSUserDefaults standardUserDefaults] synchronize];

To launch the open the app’s page in the App Store when the user taps the “Rate It!” button subscribe to the UIAlertViewDelegate protocol and implement it’s callback method.

Add the protocol to the view controller’s header file, e.g.:

@interface RootViewController : UIViewController <UIAlertViewDelegate> {
	// ...
}

Add the callback method to the view controller’s implementation:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
	if (buttonIndex == 1) {
		NSURL *url = [NSURL URLWithString:@"YOUR URL TBD!!!"];
		[[UIApplication sharedApplication] openURL:url];
	}
}

This callback opens the app’s page in the App Store by launching its URL. To determine your’s app’s URL:

  1. Open iTunes on your Mac
  2. Select iTunes Store from the left-panel
  3. Enter your app’s name in the Search iTunes Store text field and hit enter
  4. Control-click on your app’s icon and select Copy iTunes Store URL

Opening an App Store URL doesn’t work in the simulator; so test this on a device.

The idea for this story came from Billy Gray. Have an idea for a story? Contact us!

{ 11 trackbacks }

[iPhone] App 사용 중 사용자에게 Rating 요청하기 – Fighting Back Against The App Store’s Negative Rating Bias | Alones world
07.15.09 at 11:47 pm
links for 2009-07-16 | Alones world
07.16.09 at 8:31 pm
This Week in iPhone News - July 17/2009
07.17.09 at 2:47 pm
Revue de presse iPhone de la semaine du 17 Juillet 2009 | Romain Boulay . Ingénieur développement informatique mobile
07.20.09 at 4:24 am
App Store Heresies: Higher Price, Better Ratings. Don’t Discount Your App At Launch.
10.15.09 at 10:31 am
Nominate iGarageSale in the Best App Ever Awards « iGarageSale Blog
12.28.09 at 1:35 pm
Rate this app alert (dialog) when starting-up an iPhone app « The Official Blog of Web X.0 Media
01.04.10 at 2:25 pm
Indie iPhone Developer Blog
01.20.10 at 10:28 am
Strategy for improving ratings of iPhone applications | Indie iPhone Development Blog
01.20.10 at 5:11 pm
» Linking *directly* into your app’s reviews in the App Store Rune Madsen
01.21.10 at 5:19 pm
OmegaDelta » Blog Archive » Like This App? Rate it…
02.14.10 at 5:53 am

{ 26 comments… read them below or add one }

1

Benoit 07.15.09 at 2:27 am

Thanks for the very useful post and a great blog.

I would add one thing: record that you have asked the user to rate the app, regardless of the answer, to avoid bugging them every time after 10 days!

2

Josh Rosen 07.15.09 at 3:06 am

Thanks for the great tip. Also, I second Benoit’s point :)

3

MattjDrake 07.15.09 at 5:48 am

This is a fantastic tip - thanks! Everyone should do this…

4

Michael Kaye 07.15.09 at 6:02 am

great stuff

5

Mike Browne 07.15.09 at 8:12 am

That is really good information with code included…thanks!

6

pTracker 07.15.09 at 9:10 am

Great post, Dan.

Besides the “only ask once” check, there’s another consideration:

You won’t know your app’s URL until it hits the app store, so this can only work for your first update and going forward. Alternatively, the code can get the URL from a web server, which can be updated once the app launches.

7

Luke Lutman 07.15.09 at 9:40 am

You can usually guess what your app’s pretty url will be. For example:

http://itunes.com/app/MyAppName

Then you can change it to the direct url in subsequent updates :-)

8

Dan Grigsby 07.15.09 at 10:17 am

Beniot: good catch. Fixed. Made the mistake of trying to get this out late last night; should have looked at it with fresh eyes.

9

Matt Rix 07.15.09 at 11:28 am

You could also set up a redirect script on your own server that you set to point to your app page.

10

James Lin 07.15.09 at 5:51 pm

Thanks! I’ll have to keep this in mind

11

Brian Stormont 07.15.09 at 7:57 pm

I like this idea. However, one suggestion I’d have is avoid asking the user to rate the app upon launch. If the user just launched the app, they did it because they want to use it.

I think your suggestion of prompting after a certain activity is complete within the app is a better idea.

12

Dan Grigsby 07.15.09 at 8:33 pm

Brian: also a good point. Should be easy to adapt this sample code to make that happen.

13

millenomi 07.16.09 at 1:07 am

A prior solution, with localization and all, is L0SolicitReview from MuiKit http://github.com/millenomi/muikit - http://infinite-labs.net/blog/l0solicitreview-or-asking-happy-users-to-share-their-joy

14

CodeFlakes 07.16.09 at 3:58 am

I just implemented this great solution in my new app and used
http://www.itunes.com/apps/APPNAME link to predict the app link.
All my other apps respond to this kind of link. Not sure how it behaves if there is spaces in the name however

15

Billy Gray 07.21.09 at 9:33 am

With regard to link predicting, we actually do a rewrite off our own site into the store. This gives us a peak at some of the traffic numbers, too. You could even throw some params on there to tell you that it comes from your rating prompt, and then strip it on the redirect.

16

John Stallings 07.27.09 at 7:18 pm

Great idea! One thing i noticed was in the code it says daysSinceInstall == 10, i believe that should be >=10 otherwise i think you would only ask them if they happen to run it on the 10th day :)

17

Dan Grigsby 07.27.09 at 7:25 pm

John: you’re right. This post is a pebble in my shoe! I had that once, but made another change and… well, it’s fixed now.

18

Noel 08.03.09 at 8:51 am

This Apple technical note describes a better way to launch the App Store from your app, without flashing through Safari first (although you do lose the tracking ability): https://developer.apple.com/iphone/library/qa/qa2008/qa1629.html

19

Marcantonio 08.11.09 at 3:25 am

Very nice idea. The only thing is, we’re not sure that the app has been used during those first ten days. An usage counter might be an interesting addition.

20

Wendy 08.16.09 at 7:21 pm

Thanks Dan for sharing the info and folks for insightful comments. I’m tracking certain activity and prompting the user for a rating once those events have occurred.

21

Pratik 08.27.09 at 8:27 pm

UIAlertView is leaking!

Change it to:
UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@”Like This App?” message:@”Please rate it in the App Store!” delegate:self cancelButtonTitle:@”No Thanks” otherButtonTitles:@”Rate It!”, nil];
[alertView show];
[alertView release];

22

Ryan 10.13.09 at 9:22 am

It’s sad to see how untrustworthy the App Store rating system has become. Just like most Internet rating systems, what originally was created to be a big help to consumers has, like many other aspects of the Net, become plagued with deception.

Next time before downloading an app I encourage you to check out my website http://www.slapapp.com. We write trustworthy and unbiased reviews for iPhone apps. We’re more or less a litmus test for app developers. They submit their apps to us knowing they will risk a poor rating if their app is less than stellar. If someone hasn’t requested a review from us then it’s likely they may have a stinker.

Happy app hunting!
Ryan

http://www.twitter.com/slapapp

23

Dustin Kirk 10.21.09 at 2:19 pm

24

Aaron Kardell 11.04.09 at 9:48 pm

As Dustin mentioned, you can go right to the reviews page. You can avoid additional “flicker” of transitioning from the iTunes app to the App Store app by using this format of URL (note the importance of the &mt=8 at the end of the URL):

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id={your application ID number here}&pageNumber=0&sortOrdering=1&type=Purple+Software&mt=8

25

Rob 11.16.09 at 11:55 am

Just a quick thank you for this thought, the code and the revisions and ideas posted here in the comments. Valuable stuff! Keep it up!

26

Vibhor Goyal 02.05.10 at 1:49 pm

Thats a great post, and it definitely was of a great help, and thanks to dustin and aaron, as well, for directing us directly to the review page.

Leave a Comment

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Older post: This Week in iPhone News - July 10/2009

Newer post: This Week in iPhone News - July 17/2009