iRate---一个跳转AppStore评分弹窗
2016-11-29 本文已影响451人
wps_pro
gitHub地址:https://github.com/nicklockwood/iRate
可以通过配置iRate中的相关属性,来影响提醒弹出的行为,
@property (nonatomic, assign) float daysUntilPrompt;//启动几次后开始弹出,默认10次
@property (nonatomic, assign) NSUInteger usesUntilPrompt;//使用几次后开始弹出,默认10次
@property (nonatomic, assign) NSUInteger eventsUntilPrompt;//发生几次事件后弹出,默认是10次,不是启动事件,相当于自定义事件
@property (nonatomic, assign) float usesPerWeekForPrompt;//每周最多弹出几次
@property (nonatomic, assign) float remindPeriod;//选择“稍后提醒我”后的再提醒时间间隔,默认是1天
@property (nonatomic, copy) NSString *messageTitle;//提醒框的title
@property (nonatomic, copy) NSString *message;//提醒消息
@property (nonatomic, copy) NSString *updateMessage;//已经打过分的用户的提醒消息
@property (nonatomic, copy) NSString *cancelButtonLabel;//取消按钮文字(命名明显不规范)
@property (nonatomic, copy) NSString *rateButtonLabel;//去提醒按钮文本
@property (nonatomic, copy) NSString *remindButtonLabel;//稍后提醒我按钮文本
@property (nonatomic, assign) BOOL useAllAvailableLanguages;//是否支持本地化
@property (nonatomic, assign) BOOL promptForNewVersionIfUserRated;//每个版本都弹出提醒
@property (nonatomic, assign) BOOL onlyPromptIfLatestVersion;//只是最新版提醒
@property (nonatomic, assign) BOOL promptAtLaunch;//启动或者回到前台就尝试提醒
@property (nonatomic, assign) BOOL verboseLogging;//控制台输出log
@property (nonatomic, assign) BOOL useUIAlertControllerIfAvailable;//使用UIAlertController
高级特性
@property (nonatomic, strong) NSURL *ratingsURL;//打分页面的URL
@property (nonatomic, strong) NSDate *firstUsed;//第一次弹出时间,参考daysUntilPrompt设置
@property (nonatomic, strong) NSDate *lastReminded;//最后一次弹出提醒时间
@property (nonatomic, assign) NSUInteger usesCount;//当前版本弹出次数
@property (nonatomic, assign) NSUInteger eventCount;//当前版本事件次数
@property (nonatomic, readonly) float usesPerWeek;//当前版本每周弹出次数
@property (nonatomic, assign) BOOL declinedThisVersion;//用户是否拒绝当前版本打分请求
@property (nonatomic, assign) BOOL declinedAnyVersion;//用户是否拒绝所有版本打分请求,设置YES不提醒
@property (nonatomic, assign) BOOL ratedThisVersion;//当前版本是否已经打过分
@property (nonatomic, readonly) BOOL ratedAnyVersion;//之前版本都打过分
@property (nonatomic, assign) id<iRateDelegate> delegate;
方法接口
- (void)logEvent:(BOOL)deferPrompt;//发生事件进行添加
- (BOOL)shouldPromptForRating;//通过对上面各个配置参数的检查,返回YES可以提醒,NO不满足提醒条件- (void)promptForRating;//弹出提醒
- (void)promptIfNetworkAvailable;//如果网络有效将检查AppStore的App信息
- (void)promptIfAllCriteriaMet;//检查shouldPromptForRating和promptIfNetworkAvailable方法是否满足- (void)openRatingsPageInAppStore;//打开打分提醒AppStore页面
代理方法
iRateDelegate代理提供下面一些方法,通过这些方法,可以打断或重写相关方法来影响默认行为。所有方法都是可选的。这些方法跟上面的iRate方法有些关联,使用时注意。具体含义参考命名就可以了。
- (void)iRateCouldNotConnectToAppStore:(NSError *)error;- (void)iRateDidDetectAppUpdate;- (BOOL)iRateShouldPromptForRating;- (void)iRateDidPromptForRating;- (void)iRateUserDidAttemptToRateApp;- (void)iRateUserDidDeclineToRateApp;- (void)iRateUserDidRequestReminderToRateApp;- (BOOL)iRateShouldOpenAppStore;- (void)iRateDidOpenAppStore;
本地化
iRate支持很多语言的本地化,参见bundle,一些常用key:
static NSString *const iRateMessageTitleKey = @"iRateMessageTitle";
static NSString *const iRateAppMessageKey = @"iRateAppMessage";
static NSString *const iRateGameMessageKey = @"iRateGameMessage";
static NSString *const iRateUpdateMessageKey = @"iRateUpdateMessage";
static NSString *const iRateCancelButtonKey = @"iRateCancelButton";
static NSString *const iRateRemindButtonKey = @"iRateRemindButton";
static NSString *const iRateRateButtonKey = @"iRateRateButton";