Peter V
Peter V

Reputation: 2488

App Store Review Button

How can we make the "please leave us a review in the app store" functional PopUp in an iOS app?

Upvotes: 12

Views: 8633

Answers (6)

Markus Wilhelm
Markus Wilhelm

Reputation: 36

Since iOS 10.3 iOS provides a feature for this.

import StoreKit
SKStoreReviewController.requestReview()

A complete class how to request Appstore Reviews can be found on my GitHubAccount.

Cheers!

Upvotes: 0

Sam B
Sam B

Reputation: 27598

There is code missing if you want user to review your app after 20 times. The missing part is

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0)
    {
        // user hit dismiss so don't do anything
    }
    else if (buttonIndex == 1) //review the app
    {

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

    }
}

Upvotes: 4

Jehiah
Jehiah

Reputation: 2779

iRate is also another good library to present "rate this app" dialog boxes.

Upvotes: 2

PengOne
PengOne

Reputation: 48398

It's quite easy. Create an action rateGame and change the id 409954448 to your app id.

- (IBAction)rateGame {
    [[UIApplication sharedApplication] 
     openURL:[NSURL URLWithString:@"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=409954448"]];         
}

This will launch the AppStore app and take the user directly to the page where s/he can rate and review your app. If you want this to happen after, say, 20 times the user loads your app, then you can add an alert in viewDidLoad of your main page:

- (void)viewDidLoad {
    [super viewDidLoad];

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSInteger launchCount = [prefs integerForKey:@"launchCount"];
    if (launchCount == 20) {
        launchCount++;
        [prefs setInteger:launchCount forKey:@"launchCount"];
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"LIKE MY APP?" 
                                                        message:@"Please rate it on the App Store!"
                                                       delegate:self 
                                              cancelButtonTitle:@"NO THANKS" 
                                              otherButtonTitles:@"RATE NOW", nil];
        [alert show];
        [alert release];                
    }

}

This assumes you've set up the launchCount in the AppDelegate:

- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSInteger launchCount = [prefs integerForKey:@"launchCount"];
    launchCount++;
    [prefs setInteger:launchCount  forKey:@"launchCount"];  

// YOUR CODE HERE

}

Upvotes: 38

BDGapps
BDGapps

Reputation: 3356

I personally used this one. I think it works really well. http://arashpayan.com/blog/2009/09/07/presenting-appirater/

Upvotes: 7

Ben Zotto
Ben Zotto

Reputation: 70998

Well, here's one.

These are usually done as simple UIAlertViews with three buttons (Review Now, Later, Never) with preferences stored in NSUserDefaults to indicate whether the user has already done so, whether they never wish to be asked again, etc.

Upvotes: 2

Related Questions