** 注意!版本 1.1.3 使用了更新到的商店 URL。**
要使用之前的 API,请参见以下开发者工具中的 useOldApiFlow
。
ADAppRater 是一个组件,旨在通过针对满意的用户并询问他们评分您的应用程序来帮助您在 App Store 中推广您的应用。
通过定位经常与您的应用程序互动并给予高度评价的用户,这种方法是获得正面应用评论的最好方法之一。经过简单的安装过程,您可以在几周内看到您在应用到店中的评分有显著提高。
pod 'ADAppRater', '~> 1.1.3'
不要忘记在需要的地方加入 #import "ADAppRater.h"
ADAppRater 不需要配置且可以直接执行,只需使用默认配置和当前应用程序的当前 Plist 详情。
如果您确实希望配置 ADAppRater,建议在应用程序完成启动之前进行,即在 AppDelegate 的 application: didFinishLaunchingWithOptions:
方法中,如下所示
#import "ADAppRater.h"
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
// Override point for customization after application launch.
[ADAppRater sharedInstance].currentVersionDaysUntilPrompt = 1;
[ADAppRater sharedInstance].currentVersionLaunchesUntilPrompt = 3;
[ADAppRater sharedInstance].remindWaitPeriod = 5;
[ADAppRater sharedInstance].promptForNewVersionIfUserRated = NO;
[ADAppRater sharedInstance].limitPromptFrequency = 30;
return YES;
}
currentVersionDaysUntilPrompt
是自当前应用程序版本首次启动以来等待提示用户评分应用程序的天数。默认为 1。currentVersionLaunchesUntilPrompt
表示等待在提示用户评分当前应用程序版本之前需要启动的次数。默认为3次。remindWaitPeriod
是等待的天数,以便在用户请求提醒的情况下重新提示用户评分应用程序。promptForNewVersionIfUserRated
如果用户应该被提示为新版本评分,即使他已经评过旧版本,请设置为YES。默认设置为NO。limitPromptFrequency
是提示之间的最小天数(不包括由用户请求的提醒)。默认为30天(每月一次)。invalidateLastResponsePeriod
是两次提示之间的最大天数,允许在一段时间后重新提示满意的用户。默认为180天(约6个月)。设置为0则禁用此功能。ADAppRater支持多个重要事件场景,以针对达到一定目标的用户。
如果用户完成了以下任何场景之一,通常会提示用户评分应用程序,包括基本配置。
// First Scenario: At least 3 events of Type A
ADEventCriteria* criteria1 = [[ADEventCriteria alloc] initWithEventName:@”TypeA” eventCount:3];
ADEventScenario* scenario1 = [[ADEventScenario alloc] initWithEventCriterias:@[criteria1]];
// Second Scenario: At least 5 events of Type B
ADEventCriteria* criteria2 = [[ADEventCriteria alloc] initWithEventName:@”TypeB” eventCount:5];
ADEventScenario* scenario2 = [[ADEventScenario alloc] initWithEventCriterias:@[criteria2]];
// Third Scenario: At least 1 event of each type
ADEventCriteria* criteria3 = [[ADEventCriteria alloc] initWithEventName:@”TypeA” eventCount:1];
ADEventCriteria* criteria4 = [[ADEventCriteria alloc] initWithEventName:@”TypeB” eventCount:1];
ADEventScenario* scenario3 = [[ADEventScenario alloc] initWithEventCriterias:@[criteria3, criteria4]];
[ADAppRater sharedInstance].eventScenariosUntilPrompt = @[scenario1, scenario2, scenario3];
- (void)startRaterFlowFromViewController:(__weak UIViewController*)viewController;
立即启动评分流程,首先是检查用户满意度。
唯一检查的条件是确认设备是否在线。
- (void)startRaterFlowIfCriteriaMetFromViewController:(__weak UIViewController*)viewController;
只有当满足所有可配置的标准,至少完成一个事件场景(如果定义过任何),以及应用商店连接可用时,才调用评分流程。
- (BOOL)shouldPromptForRating;
如果所有可配置的标准都满足并至少完成一个事件场景(如果定义过任何),则返回YES
。
否则返回NO
。
- (void)registerEvent:(NSString*)eventName withViewController:(__weak UIViewController*)viewController;
调用此方法以通知ADAppRater已发生重要事件。此方法可以在您的应用程序的任何地方调用,并增加事件计数。
此方法还调用startRaterFlowIfCriteriaMetFromViewController:
以检查是否已完成任何场景,并且会根据情况提出现有的评分流程。
- (void)promptDirectRatingFromViewController:(__weak UIViewController*)viewController;
立即提示用户评分应用程序,跳过首先检查用户满意度的流程。
唯一检查的条件是设备是否在线。
ADAppRater基于设备设置和可用翻译进行本地化。本地化基础设施与默认文本有关,但可以进行自定义(见下文)。
如果您想使用默认文本,而您的首选语言不可用,您可以通过复制并翻译'Localizable.strings'文件并提交拉取请求来向项目做出贡献(见下面的“贡献”)。
用于默认UI流程的所有字符串都包含在ADAppRaterTexts
类中。您可以选择访问默认实例或创建一个新的实例并覆盖新的实例
[ADAppRater sharedInstance].localStrings
或者
ADAppRaterTexts* newStrings = [[ADAppRaterTexts alloc] initWithApplicationName:@"App Name" feedbackRecipientEmail:@"[email protected]"];
[ADAppRater sharedInstance].localStrings = newStrings;
要自定义ADAppRater将显示的文本,将您自定义的字符串插入到适当的ADAppRaterTexts
属性中
@property (nonatomic, strong) NSString* userSatisfactionAlertTitle;
@property (nonatomic, strong) NSString* userSatisfactionAlertMessage;
@property (nonatomic, strong) NSString* userSatisfactionAlertAnswerYes;
@property (nonatomic, strong) NSString* userSatisfactionAlertAnswerNo;
@property (nonatomic, strong) NSString* appRatingAlertTitle;
@property (nonatomic, strong) NSString* appRatingAlertMessage;
@property (nonatomic, strong) NSString* appRatingAlertAnswerRate;
@property (nonatomic, strong) NSString* appRatingAlertAnswerRemindMe;
@property (nonatomic, strong) NSString* appRatingAlertAnswerDontRate;
@property (nonatomic, strong) NSString* userFeedbackAlertTitle;
@property (nonatomic, strong) NSString* userFeedbackAlertMessage;
@property (nonatomic, strong) NSString* userFeedbackAlertAnswerYes;
@property (nonatomic, strong) NSString* userFeedbackAlertAnswerNo;
@property (nonatomic, strong) NSString* thankUserAlertTitle;
@property (nonatomic, strong) NSString* thankUserAlertMessage;
@property (nonatomic, strong) NSString* thankUserAlertDismiss;
@property (nonatomic, strong) NSString* feedbackFormRecipient;
@property (nonatomic, strong) NSString* feedbackFormSubject;
@property (nonatomic, strong) NSString* feedbackFormBody;
要将电子邮件地址设置为默认反馈表单中的收件人,将邮箱地址插入到ADAppRaterTexts
属性中
@property (nonatomic, strong) NSString* feedbackFormRecipient;
ADAppRater有两种不同类型的协议可以实施。
ADARDelegate
以通知评分流程的每个步骤。ADARCustomViewsDelegate
以在评分流程的每个步骤中使用您自己的自定义视图。所有代理方法都是可选的
- (void)appRaterWillPromptUserSatisfaction;
- (void)appRaterWillPromptUserRating;
- (void)appRaterWillPromptFeedbackRequest;
- (void)appRaterWillDisplayThankYouAlert;
- (void)appRaterUserDidAgreeToRateApp;
- (void)appRaterUserDidDeclineToRateApp;
- (void)appRaterUserDidRequestReminderToRateApp;
- (void)appRaterUserDidAgreeToSendFeedback;
- (void)appRaterUserDidDeclineToSendFeedback;
- (void)appRaterAppStoreDidOpen;
- (void)appRaterAppStoreCouldNotConnect:(NSError*)error;
所有代理方法都是可选的
- (void)promptUserSatisfationAlertFromViewController:(UIViewController*)viewController
userSatisfiedBlock:(ADAppRaterCustomViewBlock)userSatisfiedBlock
userNotSatisfiedBlock:(ADAppRaterCustomViewBlock)userNotSatisfiedBlock;
实现此方法以在应用程序内提供自定义视图或自定义文本来检查用户满意度。
这是评分流程的第一步。此方法被调用以首先检查用户是否喜欢该应用程序。
如果您不实现此方法,则将使用默认UI和文本。
- (void)promptAppRatingAlertFromViewController:(UIViewController*)viewController
userWillRateAppBlock:(ADAppRaterCustomViewBlock)userWillRateAppBlock
remindUserLaterBlock:(ADAppRaterCustomViewBlock)remindUserLaterBlock
userRefusedBlock:(ADAppRaterCustomViewBlock)userRefusedBlock;
实现此方法,以提供自定义视图或自定义文本来询问用户对应用的评分。
如果用户表示对应用满意,将调用此方法。
如果您不实现此方法,则将使用默认UI和文本。
- (void)promptFeedbackRequestAlertFromViewController:(UIViewController*)viewController
userWillSendFeedbackBlock:(ADAppRaterCustomViewBlock)userWillSendFeedbackBlock
userWillNotSendFeedbackBlock:(ADAppRaterCustomViewBlock)userWillNotSendFeedbackBlock;
实现此方法,以提供自定义视图或自定义文本来请求用户发送反馈。
如果用户表示对应用不满意,将调用此方法。
如果您不实现此方法,则将使用默认UI和文本。
- (void)displayThankYouAlertFromViewController:(UIViewController*)viewController
completionBlock:(ADAppRaterCustomViewBlock)completion;
实现此方法,以提供自定义视图或自定义文本来感谢用户提供的反馈。
如果用户成功发送了反馈,将调用此方法。
如果您不实现此方法,则将使用默认UI和文本。
- (void)presentFeedbackFormFromViewController:(UIViewController*)viewController
userSentFeedbackBlock:(ADAppRaterCustomViewBlock)userSentFeedbackBlock
userDidNotSendFeedbackBlock:(ADAppRaterCustomViewBlock)userDidNotSendFeedbackBlock;
实现此方法,以提供建议的表单或自定义文本提供反馈的电子邮件/表单。
如果用户在表示对应用不满意之后同意发送反馈,将调用此方法。
如果您未实现此方法,则将使用默认电子邮件应用。
ADAppRater支持几个属性,以帮助开发者调试。
@property (nonatomic) BOOL enableLog;
ADAppRater有许多日志消息以跟踪流程和状态。禁用日志消息将停止将这些日志输出到控制台。
默认为NO
(用于生产环境)。设置为YES
以开始打印日志消息。
@property (nonatomic) BOOL previewMode;
如果设置为YES
,无论配置如何或记录的事件的重要性如何,ADAppRater都将始终启动提示流程。使用此功能在测试期间校对文本。
此属性通过DEBUG
编译标志进行包装,因此它不会出现在发行编译中。
确保您的应用对属性的任何调用也用编译标志包装或删除,然后再提交。
- (void)useOldApiFlow;
一个开发者方法,将工作流程重置为使用旧URL。
仅用作切换。 旧URL将很快被删除,此功能也将被删除。
- (void)resetUsageHistory;
一个开发者方法,将保存的重要事件的已使用情况重置为从头开始。
此方法通过DEBUG
编译标志进行包装,因此它不会出现在发行编译中。
确保您的应用对此方法的任何调用也用编译标志包装或删除,然后再提交。
- (void)appRaterLogToConsole:(NSString*)message;
是ADARDelegate
协议的一部分。实现此方法以提供自定义日志组件(而不是NSLog
)。可选
参见变更日志页面。
参见贡献页面。
是否使用ADAppRater?告诉我。