用户使用了软件却不到 App Store 打分或是写评论是很令开发者头疼的。下面这个方法能在 iPhone App 中集成提醒功能,弹出文字框来提示没有打分的用户。
主要代码
[[CloudReview sharedReview]reviewFor:395519376];
CloudReview.h
#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface CloudReview : NSObject { int m_appleID; } +(CloudReview*)sharedReview; -(void) reviewFor:(int)appleID; -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex; @end
CloudReview.m
#import "CloudReview.h" @implementation CloudReview static CloudReview* _sharedReview = nil; +(CloudReview*)sharedReview { @synchronized([CloudReview class]) { if (!_sharedReview) [[self alloc] init]; return _sharedReview; } return nil; } +(id)alloc { @synchronized([CloudReview class]) { NSAssert(_sharedReview == nil, @"Attempted to allocate a second instance of a singleton."); _sharedReview = [super alloc]; return _sharedReview; } return nil; } -(void)reviewFor:(int)appleID { m_appleID = appleID; BOOL neverRate = [[NSUserDefaults standardUserDefaults] boolForKey:@"neverRate"]; if(neverRate != YES) { //Show alert here UIAlertView *alert; alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"rate_title",@"Rate My Appication") message:NSLocalizedString(@"rate_main",@"Please Rate my Application") delegate: self cancelButtonTitle:NSLocalizedString(@"rate_cancel",@"Cancel") otherButtonTitles: NSLocalizedString(@"rate_now",@"Rate Now"), NSLocalizedString(@"rate_never",@"Never Rate"), nil]; [alert show]; [alert release]; } } -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { // Never Review Button if (buttonIndex == 2) { [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"neverRate"]; } // Review Button else if (buttonIndex == 1) { [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"neverRate"]; NSString *str = [NSString stringWithFormat: @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%d", m_appleID ]; NSLog(str); [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]]; } } @end