Paul Morris
Paul Morris

Reputation: 1773

Opening up App Store to Rate from within my App

I was wondering if it is possible to take my user directly to the review section of my app on the app store from within my app?

I don't want this to open in Safari, I want it to directly open the App Store app on the device and take them to the review page.

I have tried the following;

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=437688779&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software"]];

However, clicking that seems to open up the iTunes app and not app store and then just gives an error saying "Cannot Connect to the store. A secure connection could not be established".

Any ideas?

Upvotes: 7

Views: 13520

Answers (6)

Craig Grummitt
Craig Grummitt

Reputation: 2995

There seems to be an issue worth mentioning in iOS 7.0 as described here. You can see how Appirator dealt with the problem in their source here.

Basically, you need to handle 7.0 users differently, as so: (the first line is the same as the accepted solution, the appended strings are just on the same line.)

NSString *str = @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=yourAppIDHere";
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
    str = @"itms-apps://itunes.apple.com/app/idyourAppIDHere";
}
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];

Update 19 August 2015

The URLs above don't work for iOS 8.0. Updated code catering for all iOS versions would be:

NSString *str;
float ver = [[[UIDevice currentDevice] systemVersion] floatValue];
if (ver >= 7.0 && ver < 7.1) {
    str = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@",appID];
} else if (ver >= 8.0) {
    str = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=%@&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software",appID];
} else {
    str = [NSString stringWithFormat:@"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@",appID];
}
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];

Source: Appirator


Update 14 November 2017

From iOS 10.3, we can request a review using the SKStoreReviewController, which actually opens a neat little popover in your app rather than navigating away from your app:

if (@available(iOS 10.3, *)) {
  [SKStoreReviewController requestReview];
  return;
}

Upvotes: 24

Anup Gupta
Anup Gupta

Reputation: 2083

use this its also help you.

  NSString *fdAppUrl=@"itms://itunes.apple.com/us/app/apple-store/id1137341185?mt=8";

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:fdAppUrl]];

http://stackoverflow.com/questions/433907/how-to-link-to-apps-on-the-app-store

Upvotes: 0

Vishnu R Kaimal
Vishnu R Kaimal

Reputation: 39

Use this:- @"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@";

Upvotes: 0

Youssef
Youssef

Reputation: 3592

As seen in this blog:

- (IBAction)gotoReviews:(id)sender
{
    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:@"%@yourAppIDHere", str]; 

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
}

Upvotes: 18

Frank
Frank

Reputation: 15641

You can just use the class iRate, did work well for me.

Upvotes: 1

P&#229;l Brattberg
P&#229;l Brattberg

Reputation: 4698

You want an itms:// link, and here's a handy place to generate one. Make sure you change the protocol from http(s): to itms: (or itms-apps: which seems to be the new way).

Upvotes: 4

Related Questions