That's Fine for Gruber

John Gruber recently wrote an article which I thought was particularly mean spirited, wherein he encouraged readers to leave a one star review for any app that prompts the user to leave one. 

The problem is reviews are critical to developers. Many people will avoid an app that has no reviews. Podcasters also ask for iTunes ratings to improve visibility and increase their subscriber base. Although Gruber doesn’t seem to be doing this, Dan Benjamin definitely did it on his behalf during the 5by5 run of The Talk Show. I guess Gruber has such a massive following these days that he doesn’t need to ask for ratings. That’s fine for Gruber.

In my opinion, there is nothing wrong in principle with asking for a review. However, it has to be done tactfully and respectfully, and that’s where so many developers go wrong. Gruber has a point, but the solution he suggests is damaging to the whole developer community.

Joe Cieplinksi tweeted: “The most important thing is WHEN it happens. If you interrupt me to ask for a rating, I’m going to hate you.”

That tweet made me realize that I’m as guilty as anyone, because my apps prompt for a rating on launch (after it has been used for several days of course). If I launch an app, I want to use it right away, not after taking a side trip to the app store.

So I’m adopting this policy. My apps will ask for a rating only after the user has completed some significant action in the app. For game developers, that could mean after completing a level. For Voice Changer Plus it will be after sharing or saving a recording. The point is we should try as much as possible not to interrupt the user’s work flow.

If you are a developer and use the ironically named but excellent rating software iRate by Nick Lockwood, it’s simple.

Add this to your app delegate:

+(void)initialize {
[iRate sharedInstance].promptAtLaunch = NO;

Then use this snippet where you want to show a prompt:

if([[iRate sharedInstance] shouldPromptForRating])
[[iRate sharedInstance] promptIfNetworkAvailable];

Now let's all get along.