Follow

Create iOS link to review your App in the app store

The method of instantiating the review screen and the presentation varies between version of the OS.

iOS5

In iOS5, you make a call to the UIApplication singleton to open a URL which contains the app store ID of the app.

  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=XXXXXXXXX"]];

This will result in the user being taken out of the app into Safari and presented directly with an web interface to leave a review.

iOS6

iOS6 uses the same mechanism as iOS5 does, but instead of leaving the app, the user is presented with a modal form sheet that contains a web view and loads a view to the app store.

  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=XXXXXXXXX"]];

iOS7

For iOS7 you need to implement some more complex code but it will give a modally presented form sheet with a native-code interface to the app store review functions. You may need to optionally link against the StoreKit framework, if you have not already.

First you need to make sure your view controller conforms to:

  @interface ExampleViewController:UIViewController <SKStoreProductViewControllerDelegate>

Then use this code to present the interface:

  NSDictionary *parameters = @{SKStoreProductParameterITunesItemIdentifier:@"XXXXXXXXX"];
      SKStoreProductViewController *productViewController = [[SKStoreProductViewController alloc] init];
      [productViewController loadProductWithParameters:parameters completionBlock:nil];
      [productViewController setDelegate:self];
      [self presentViewController:productViewController animated:YES completion:nil];

Finally make sure you implement the following delegate method to allow the view to dismiss when the user is done:

  '-(void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
    [viewController dismissViewControllerAnimated:YES completion:nil];
  }

The iOS5 and iOS6 version, being identical will work on either OS and only differ in the result at runtime. For iOS7 however, you'll need to enclose the method call within a guard for the OS version. Typically using a check for the runtime value of NSFoundationVersionNumber.

Was this article helpful?
0 out of 1 found this helpful
Have more questions? Submit a request

Comments

  • Avatar
    Ian Sharp

    SKStoreProductViewControllerDelegate doesn't let you 'write a review'

Powered by Zendesk