Combat the 1-star menace

In my previous post I mentioned the big problem with the way Apple prompts users for reviews, by asking uses to rate an app at the point that they delete it, this naturally leads to all the people who didn’t like an app leaving a low rating. This is a particular problem with free apps – people download something because it’s free, decide it’s not for them after about 30 seconds and then hit 1 star when Apple invites them to rate it. Meanwhile who knows how many happy users, who didn’t delete the app, aren’t invited for their views.

So, to encourage users to review your app while in a positive frame of mind, and therefore drive up your average score (actually, to encourage a less skewed set of ratings), one remedy is to add code to your app that takes them to the page on the app store where they can review your app. You don’t want to do this too often or it will annoy, and that could generate the type of review you don’t want. So, perhaps you could prompt users who have had the app installed a certain length of time, or in the case of a game if they get a good score, but only do this once. Hopefully enough users will see the prompt while they’re feeling good about your app to generate some good feedback.

I decided to add such a prompt to my game CodeSpin – here’s how to do it:

- (void)rateAppDialog {

   UIActionSheet *actionSheet = [[UIActionSheet alloc]
      initWithTitle:@"If you like this app, please rate it. Thanks!"
      delegate:self
      cancelButtonTitle:@"Maybe Later"
      destructiveButtonTitle:@"Rate it Now"
      otherButtonTitles:nil];

   askedforreviewalready = TRUE;
   [actionSheet showInView:self.view];
   [actionSheet release];
}

- (void)actionSheet:(UIActionSheet *)actionSheet
  didDismissWithButtonIndex:(NSInteger)buttonIndex {

    if (buttonIndex != [actionSheet cancelButtonIndex])
    {
       NSURL *url = [NSURL URLWithString:
          @"http://itunes.apple.com/us/app/codespin/id357871024?mt=8"];

       [[UIApplication sharedApplication] openURL:url];
    }
}

Obviously you need to change the URL to be the page for your app on iTunes. Also, note how we set a boolean flag to remember that the user has been prompted once already. Elsewhere in my code I persist this along with all the other data that I want to store between sessions, and then at the point in the code where a user sets a high score > 200 (which is my way of identifying someone who’s played the game for a little while), I check this flag and if they haven’t been prompted yet, show the alert defined above:

if (hiscore>200 && askedforreviewalready == FALSE)
{
        [self rateAppDialog];
 }

Leave a comment