Ad

Our DNA is written in Swift
Jump

Asking Users for a Review

Reviews

Yves Gonzales asked:

“Would you know what the URL scheme is for writing a review in the AppStore, launched from within an app in iPhone, which opens AppStore? (I want to ask users to leave a review.)”

At first I answered that I did not think this was possible. But Yves, with the help of trusty Mr. Google discovered a better answer than mine. There is in fact a possibility to get the mobile App Store app to open on the review page for a specific app.

The solution was documented by Edward Patel on his blog. I replaced the app id with mine and the result is that the app closes and the mobile App Store opens showing the corresponding review page.

NSString *str = @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa";
str = [NSString stringWithFormat:@"%@/wa/viewContentsUserReviews?", str];
str = [NSString stringWithFormat:@"%@type=Purple+Software&id=", str];
 
// Here is the app id from itunesconnect
str = [NSString stringWithFormat:@"%@308590265", str];
 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];

At the top of the review page there is button that allows the customer to leave the coveted review.

Yves put this code into his own to automatically present an alert view to the user after several starts of the app to nag kindly ask for a review. Upon launching of the app you would call the reviewCounter method. This gets the number of launches so far and on the third launch it presents such an alert view.

Review Dialog

Here’s the code for that, courtesy of Yves. I cleaned it up a bit and removed NSLogs.

- (void) reviewCounter
{
	CGFloat reviewInt = [[NSUserDefaults standardUserDefaults] integerForKey: @"intValueKey"];
 
 
	if (reviewInt)
	{
		reviewInt++;
		[[NSUserDefaults standardUserDefaults] setInteger:reviewInt forKey:@"intValueKey"];
	}
	else
	{
		CGFloat start = 1;
		NSUserDefaults *reviewPrefs = [NSUserDefaults standardUserDefaults];
		[reviewPrefs setInteger:start forKey: @"intValueKey"];
		[reviewPrefs synchronize]; // writes modifications to disk
	}
 
 
	if (reviewInt == 3)
	{
		UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Mabuhay!" message:@"Looks like you Enjoy using this app. Could you spare a moment of your time to review it in the AppStore?"
													   delegate:self cancelButtonTitle:nil otherButtonTitles: @"OK, I'll Review It Now", @"Remind Me Later", @"Don't Remind Me", nil];
		[alert show];
		[alert release];
 
		reviewInt++;
 
		[[NSUserDefaults standardUserDefaults] setInteger:reviewInt forKey:@"intValueKey"];
	}
}
 
 
#pragma mark alert view delegate
 
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
	// the user clicked one of the OK/Cancel buttons
	if (buttonIndex == 0)
	{
 
		NSString *str = @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa";
		str = [NSString stringWithFormat:@"%@/wa/viewContentsUserReviews?", str];
		str = [NSString stringWithFormat:@"%@type=Purple+Software&id=", str];
 
		// Here is the app id from itunesconnect
		str = [NSString stringWithFormat:@"%@308590265", str];
 
		[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
 
	}
	else if (buttonIndex == 1)
	{
		int startAgain = 0;
		[[NSUserDefaults standardUserDefaults] setInteger:startAgain forKey:@"intValueKey"];
 
	}
	else if (buttonIndex == 2)
	{
		int neverRemind = 4;
		[[NSUserDefaults standardUserDefaults] setInteger:neverRemind forKey:@"intValueKey"];
	}
}

The theory behind this approach is that users would generally forget to leave a review because it is not part of the regular flow of things from finding the app, purchasing and trying it out.

Do you think this will get more people to comment favorably on your app if you ask them for it? Will more reviews mean more sales? Comment below.


Categories: Q&A

10 Comments »

  1. I think it’s a great way to increase the number of the reviews. Like every other dev I am a user too and from experience I can attest that leaving reviews isn’t a priority at all :/ I still have a todo to write some reviews. Sadly Apple makes this unnecessarly cumbersome. Writing on the iPhone is a chore which favors short reviews and iTunes doesn’t allow you to write more reviews at once from your Applications area.

  2. Appirater by Arash Payan (http://arashpayan.com) provides an automated version where the user is prompted (after a set number of launches or time) whether they want to write a review and again they are automatically taken to the review page

    Michael

    http://www.sendmetospace.co.uk

  3. Nice.

    I added this recently to an app (awaiting approval), since people need a little reminder.

    The apple docs only mention opening an “http://” link to launch the App Store but that seems to open/close safari quickly before going to the App Store, so this is a nice improvement.

  4. I like this approach, lots of times people are rating their apps, when they delete the app, if they’re deleting the app, it’s mostly because they didn’t like it. So… it’s not really a good system.

    Reminding people to rate, and bringing them to the rating screen is perfect. Even if they don’t rate, it’s still good to know a lot of your customers are going to at least see the reminder.

  5. I use the appirater code for an iPhone app for a few months now. This app became a universal app for iPhone and iPad and the code continued to work fine even on the iPad.

    Now I have another app which is iPad-only. It looks like the page at “itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=APP_ID&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software” only exists for iPhone and Universal Apps and so this doesn’t work anymore.

    Do you know of any alternative urls? Maybe an url that opens the app in the app store but scrolls down to the user ratings section?