iRate庫通過激勵用戶去AppStore打分,來幫助你提升iphone和Mac App的質量。這是取得經常使用的目標用戶的意見的最好的方式之一。
以前,App中都是顯示的添加“去打分”功能項。但是由于蘋果審核人員工作的時候會根據心情,判斷是否有“引導用戶打分行為”而Reject咱辛苦搞好的App,所以建議把“去打分”功能項隱藏。
用別人的庫還是得看懂源碼,要不真不放心,對吧?!
別的地方都可以不看,唯獨shouldPRomptForRating
這個方法必須看,用于判斷是否滿足提醒條件。
有兩套方案可以玩:
通過配置iRate,在App啟動的時候檢查配置和AppStore,來進行判斷是否需要彈出打分提醒。采用此方案,無需對iRate源碼進行剪裁,但是每次啟動都要檢查AppStore,自定義能力較差。
通過配置iRate,去掉檢查AppStore的部分,根據自己服務端提供的信息,來判斷是否需要彈出打分提醒。采用此方案,靈活性較高,App在審核中可以通過服務端關掉提醒,待通過審核后放開提醒。
支持環境- iOS 8.3 / Mac OS 10.10 (Xcode 6.1, Apple LLVM compiler 6.1)
從1.7開始,iRate需要使用ARC。如果你在使用非ARC項目,只需要在iRate.m上添加“-fobjc-arc”編譯標志(Build Phases->Compile Sources->雙擊iRate.m->添加-fobjc-arc)
集成iRate時,只需要添加iRate.h,.m,.bundle三個文件到項目中,如果不在乎本地化也可以忽略.bundle文件。
iRate是典型的安全不用配置,就可以簡單的運行起來,內部是通過應用的bundle ID到AppStore中查找AppID。
如果想自定義iRate,最好在App完成啟動之前,最簡單的方式是添加配置代碼到AppDelegate的initialize方法中:(本人不推薦放在這里,建議放到完全啟動完App后進行)
#import "iRate.h"+ (void)initialize{ //configure iRate [iRate sharedInstance].daysUntilPrompt = 5; [iRate sharedInstance].usesUntilPrompt = 15;}
可以通過配置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";
注: 文章由我們iOS122的小伙伴 @笨兒高興~
整理,喜歡就一起參與: iOS122 任務池
新聞熱點
疑難解答