iRate 1.12.2

iRate 1.12.2

测试已测试
Lang语言 Obj-CObjective C
许可证 zlib
发布时间最新发布2018年2月

Nick Lockwood维护。



iRate 1.12.2

  • 作者
  • Nick Lockwood

用途

Multipv is a library used to add CentOS 6.x RPM packages and 7.x YUM metadata to podspec files for your Pods, so that these packages can be published in CocoaPods repositories using the distribution tags which correspond to the release versions of CentOS.

支持的操作系统与SDK版本

  • 支持构建目标 - iOS 10.3 / Mac OS 10.12 (Xcode 8.3)
  • 最早支持部署目标 - iOS 8.0 / Mac OS 10.11
  • 最早兼容部署目标 - iOS 7.0 / Mac OS 10.9

注意:'支持'表示库已与该版本进行过测试。'兼容'表示库应在该操作系统版本上运行(即它不依赖于任何不可用的SDK特性),但不再对其进行兼容性测试,可能需要调整或修复错误以确保正常运行。

ARC兼容性

从版本1.7开始,iRate需要ARC。如果您想在非ARC项目中使用iRate,只需将-fobjc-arc编译器标志添加到iRate.m类中。要这样做,请转到目标设置中的构建阶段选项卡,打开编译源文件组,在列表中双击iRate.m,再在弹出窗口中键入-fobjc-arc。

如果您想将整个项目转换为ARC,请取消注释iRate.m中的#error行,然后运行Xcode的编辑>重构>转换到Objective-C ARC...工具,并确保您希望使用ARC的文件都已勾选(包括iRate.m)。

线程安全

Multipv uses threading internally to avoid blocking the UI, but none of the Multipv external interfaces are thread safe and you should not call any methods or set any properties on Multipv except from the main thread.

安装

要将Multipv安装到您的应用程序中,将iRate.h、.m和.bundle文件拖放到您的项目中。如果您不对本地化文本感兴趣,可以省略 bundle。

Multipv通常无需任何配置即可自动运行,使用应用程序的包标识在App Store中查找应用ID。

注意:如果您在Mac和iOS应用商店中(即使它们使用不同的首字母大写)都有匹配的包标识符的应用程序,查找机制将不会工作,因此您需要手动设置appStoreID属性,这是一个可以找到的数字ID, 您设置应用程序后可以在iTunes Connect中找到。此外,如果您正在创建一个沙盒Mac应用程序,并且您的应用程序没有请求网络访问权限,那么您需要设置appStoreID,因为它无法从iTunes服务中检索。

如果您想自定义iRate,最好的时机是您AppDelegate的-[application:didFinishLaunchingWithOptions:]方法中。在此之后应用配置可能不会工作,因为提示可能已经在该时刻显示。

#import "iRate.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //configure iRate
    [iRate sharedInstance].daysUntilPrompt = 5;
    [iRate sharedInstance].usesUntilPrompt = 15;
    
    return YES;
}

配置

要配置iRate,有以下iRate类的属性可以改变iRate的行为和外观。这些属性大多数应该显而易见,但如下文档所述。

@property (nonatomic, assign) NSUInteger appStoreID;

这应该与您应用程序的iTunes应用程序ID相匹配,您可以在设置应用程序后从iTunes connect获取该ID。此值通常不是必需的,并且通常仅在您有上面提到的Mac和iOS应用程序包标识符之间的冲突时需要,或者在沙盒Mac应用程序的情况下,由于您的应用程序没有网络权限,因为它无法自动使用iTunes服务检索appStoreID。

@property (nonatomic, assign) NSUInteger appStoreGenreID;

这是应用程序类型,用于确定评分对话框的默认文本。这会自动通过调用iTunes服务来设置,所以您通常不需要手动设置。如果您想覆盖此值,将定义为iRateAppStoreGameGenreID常量将导致iRate使用“游戏”版本的评分对话框,将设置为任何其他值将使用“应用程序”版本的评分对话框。

@property (nonatomic, copy) NSString *appStoreCountry;

这是用于指定要检查的iTunes商店的两位字母国家代码。它自动从设备区域设置中设置,所以在大多数情况下不需要更改。您可以通过将其修改为指向美国商店或您首选的另一个特定商店来覆盖它,如果您的应用程序只在特定国家/地区提供,这可能是一个好主意。

@property (nonatomic, copy) NSString *applicationName;

这是iRate警告中显示的应用程序名称。它自动从应用程序的info.plist中设置,但您可能希望用一个更短或更长的版本来覆盖它。

@property (nonatomic, copy) NSString *applicationBundleID;

这是应用程序的捆绑ID,用于从iTunes检索appStoreIDappStoreGenreID。这自动从应用程序的info.plist中设置,所以您通常不需要更改它,除非出于测试目的。

@property (nonatomic, assign) float daysUntilPrompt;

这是用户在提示评分之前必须安装应用程序的天数。时间是从应用程序首次启动时开始计算的。这是一个浮点值,因此可以用来指定以分数表示的天数(例如0.5)。默认值是10天。

@property (nonatomic, assign) NSUInteger usesUntilPrompt;

这是用户在被提示评分之前必须启动应用程序的最低次数。这避免了用户运行了一次应用程序,几周内没有看它,然后再次启动它,只被立即提示评级的情景。最小使用次数确保只有经常使用应用程序的用户才会被提示。只有在达到指定天数和使用的次数之后才会出现提示。默认值为10次。

@property (nonatomic, assign) NSUInteger eventsUntilPrompt;

对于某些应用程序,启动次数并不是衡量使用情况的好指标。例如,该应用程序可能是一个始终运行的守护程序,或者是一个用户必须达到特定等级后才能撰写有见地的评论的游戏。在这种情况下,您可以手动记录重要事件,并在发生预定数量的事件后出现提示。这与usesUntilPrompt设置类似,提示仅在指定天数和事件数之后出现。然而,一旦达到天数阈值,如果事件阈值或使用阈值中的任何一个达到,提示就会出现。默认为10次事件。

@property (nonatomic, assign) float usesPerWeekForPrompt;

如果您对应用程序使用的总次数不太关心,但更希望使用应用程序使用的频率,则可以使用usesPerWeekForPrompt属性设置用户每周必须启动应用程序的最小阈值(平均)。请注意,这是自应用程序安装以来的平均值,因此如果用户长时间不运行应用程序,可能会影响平均值。默认值为零。

@property (nonatomic, assign) float remindPeriod;

应用程序在选择“稍后提醒”选项后等待多久才提醒用户对其进行评分(以天为单位)。零表示应用程序将在下一次启动时提醒用户。请注意,此值高于其他标准,因此在提醒期内,应用程序不会要求评分,即使在此期间发布了新版本也是如此。默认为1天。

@property (nonatomic, copy) NSString *messageTitle;

评分提示显示的标题。如果不希望显示标题,请将其设置为@"";

@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;

默认情况下,iRate将使用iRate.bundle中的所有可用语言,即使在一个不支持本地化的应用程序中使用也是如此。如果您希望限制iRate仅使用与您的应用程序已支持的语言集相同,请将此属性设置为NO。(默认为YES)。

@property (nonatomic, assign) BOOL promptForNewVersionIfUserRated;

由于iTunes评分是针对特定版本的,因此您最好让用户为他们应用程序的每个新版本评分。真正喜欢您的应用程序的用户可能愿意为新版本更新他们的评论。将promptForNewVersionIfUserRated设置为YES,iRate将在每次用户安装更新时再次提示用户评分,直到他们拒绝评分应用程序。如果他们拒绝,则不再询问。

@property (nonatomic, assign) BOOL onlyPromptIfLatestVersion;

将其设置为NO以启显示评分提示,即使用户不是运行应用程序最新版本。默认为YES,这样用户就不会因为您已经修复的bug等原因留下恶意评论。

@property (nonatomic, assign) BOOL onlyPromptIfMainWindowIsAvailable;

此设置仅适用于Mac OS。默认情况下,在Mac OS上,iRate警报以工作表的形式显示在主窗口中。一些应用程序没有主窗口,因此这种方法不起作用。对于此类应用程序,将此属性设置为NO,以允许iRate警报作为常规模态窗口显示。

@property (nonatomic, assign) BOOL promptAtLaunch;

将此设置为NO可以禁用应用程序启动或从后台返回时自动出现的评分提示。评分标准将继续跟踪,但在该设置有效期间,将不会自动显示提示。如果您希望手动控制评分提示的显示,可以使用此选项。

@property (nonatomic, assign) BOOL verboseLogging;

此选项会导致iRate向控制台发送有关提示决策过程的详细信息日志。如果您的应用程序在您预期的情况下没有正确提示评分,这会有助于您找出原因。默认情况下,详尽的日志记录在调试构建中启用,在发布和部署构建中禁用。

@property (nonatomic, assign) BOOL previewMode;

如果设置为YES,iRate将在启动时始终显示评分提示,无论应用程序已经使用多长时间或是否为最新版本(除非您明确禁用了promptAtLaunch选项)。用于在测试期间检查您的消息是否正确和配置是否正确,但最终发布时请禁用(默认为NO)。

@property (nonatomic, assign) BOOL useUIAlertControllerIfAvailable;

默认情况下,iRate将使用UIAlertView在iOS上显示评分提示。UIAlertView已在iOS8中弃用,并由UIAlertController替代。遗憾的是,与UIAlertView不同,使用UIAlertController呈现警报会干扰应用程序显示其他控制器的能力,并且由于iRate可以在应用程序生命周期的任何时间点理论上显示警报,因此它可能会与尝试显示另一个视图控制器的应用程序冲突。因此,默认禁用了UIAlertController的使用。您只有在确定它不会与您的应用程序逻辑冲突的情况下才应将此属性设置为YES(例如,如果您已禁用自动评分提示,或如果您的应用程序不使用任何模态视图控制器)。

@property (nonatomic, assign) BOOL useSKStoreReviewControllerIfAvailable;

默认情况下,iRate将使用SKStoreReviewController在iOS 10.3及以上版本请求评分。要禁用它,请将useSKStoreReviewControllerIfAvailable设置为NO

高级属性

如果默认的iRate行为不符合您的需求,您可以通过使用高级属性、方法和使用代理来实现自己的行为。以下属性允许您访问内部状态并覆盖它

@property (nonatomic, strong) NSURL *ratingsURL;

应用程序将引导用户访问以撰写应用程序评分的URL。此值将自动设置为给定平台上的正确值。在iOS 6及以下版本中,此URL将直接引导用户到评分页面,但在iOS 7和Mac OS中,它将引导用户到主应用程序页面(如果可以在这些平台上直接链接到评分页面,我尚未找到它)。如果您正在实现自己的评分提示,您可能应该使用openRatingsPageInAppStore方法,尤其是在Mac OS上,因为打开Mac应用商店的过程比简单地打开URL更复杂。

@property (nonatomic, strong) NSDate *firstUsed;

用户启动当前版本应用程序的第一个日期。这用于计算是否满足daysUntilPrompt标准。

@property (nonatomic, strong) NSDate *lastReminded;

用户最后一次请求稍后提醒评分应用程序的日期。

@property (nonatomic, assign) NSUInteger usesCount;

当前版本应用程序使用的次数(启动)。

@property (nonatomic, assign) NSUInteger eventCount;

自当前版本安装以来记录的显著的程序事件数。此值通过logEvent方法递增,但也可以直接操作。查看事件演示了解如何使用它。

@property (nonatomic, readonly) float usesPerWeek;

当前版本应用程序每周平均使用的次数(启动)。

@property (nonatomic, assign) BOOL declinedThisVersion;

此标志表示用户是否拒绝对当前版本进行评分(是)或不是(否)。目前iRate提示逻辑没有使用此标志,但它可能在实现您自己的逻辑时很有用。

@property (nonatomic, assign) BOOL declinedAnyVersion;

此标志表示用户是否拒绝对应用的任何先前版本进行评分(是)或不是(否)。如果此设置为是,iRate将不会自动提示用户。

@property (nonatomic, assign) BOOL ratedThisVersion;

此标志表示用户是否已经对当前版本进行了评分(是)或不是(否)。

@property (nonatomic, readonly) BOOL ratedAnyVersion;

此(只读)标志表示用户是否已对应用的任何版本进行过评分(是)或不是(否)。

@property (nonatomic, assign) id<iRateDelegate> delegate;

您提供的一个实现了以下所述 iRateDelegate 协议的对象。使用它来检测和/或覆盖iRate的默认行为。默认情况下为App Delegate,因此如果您使用App Delegate作为iRate代理,则无需设置此属性。

方法

除了配置之外,iRate还具有以下方法

- (BOOL)shouldPromptForRating;

如果满足提示标准,则返回YES,如果没有满足,则返回NO。如果您已在应用启动时禁用了自动显示,则可以使用此方法决定何时显示评分提示。调用此方法不会调用iRateShouldPromptForRating代理方法。

- (void)promptForRating;

此方法将立即触发评分提示而无需检查商店是否可用,且不会调用iRateShouldPromptForRating代理方法。请注意,此方法依赖于appStoreIDapplicationGenre属性,这些属性仅在查询iTunes服务器后才检索,因此如果您打算直接调用此方法,您需要事先设置这些属性,或使用promptIfNetworkAvailable方法代替。

- (void)promptIfNetworkAvailable;

此方法将检查商店是否可用,如果是,则向用户显示评分提示。在显示警告之前将调用iRateShouldPromptForRating代理方法,因此您可以拦截它。请注意,如果您的应用是在沙箱中并且没有网络访问权限,此方法将忽略网络可用性状态,但是在这种情况下您需要手动设置appStoreID,否则iRate无法工作。

- (void)promptIfAllCriteriaMet;

此方法将检查是否满足所有提示标准,以及商店是否可用。如果是,则向用户显示评分提示。在显示警告之前将调用iRateShouldPromptForRating代理方法,因此您可以拦截它。

- (void)openRatingsPageInAppStore;

此方法跳过用户警告,并打开Mac或iPhone应用商店中的应用评分页面,具体取决于iRate运行的平台。此方法不会执行任何检查以验证机器是否有网络访问权限或商店是否可用。它也不会调用-iRateShouldOpenAppStore代理方法。您应使用此方法来打开评分页面,而不是使用评分URL属性,因为在许多情况下启动应用商店的过程比仅打开URL要复杂得多。请注意,此方法依赖于appStoreID,该属性仅在查询iTunes服务器后才检索。如果您在没有先执行更新检查的情况下调用此方法,您将需要亲自设置appStoreID属性,或者该方法可能需要一些时间进行网络调用,或者完全失败。在成功情况下,此方法将调用-iRateDidOpenAppStore代理方法。在失败情况下将调用-iRateCouldNotConnectToAppStore:代理方法。

- (void)logEvent:(BOOL)deferPrompt;

此方法可以从您的应用的任何位置调用(配置完iRate之后),并增加iRate的重要事件计数。当达到预定义的事件数量时,将显示评分提示。可选的deferPrompt参数用于确定提示是立即显示(NO)还是应用等待到下一次启动(YES)。

- (void)remindLater;

此方法重置提醒周期。

代理方法

iRateDelegate协议提供以下方法,可用于拦截iRate事件并覆盖默认行为。所有方法都是可选的。

- (void)iRateCouldNotConnectToAppStore:(NSError *)error;

如果iRate无法连接到App Store,将调用此方法,通常是因为网络连接断开。如果您的应用由于Sandbox权限而无法访问网络,这可能会导致此方法被调用,在这种情况下,您需要手动设置appStoreID,以便iRate仍然可以工作。

- (void)iRateDidDetectAppUpdate;

如果iRate检测到自上次启动以来应用已更新,将调用此方法。

- (BOOL)iRateShouldPromptForRating;

在向用户显示评分提示之前立即调用此方法。您可以使用此方法实现除标准规则外的自定义提示逻辑。您还可以使用此方法阻止标准提示警报,以不同的方式显示评分提示或完全跳过它。

- (void)iRateDidPromptForRating;

在向用户显示评分提示之前立即调用此方法。如果您使用分析跟踪用户看到提示并前往App Store的百分比,这将很有用。这可以帮助您细调提示的显示时机和方式。

- (void)iRateUserDidAttemptToRateApp;

当用户在评分提示中点击评分按钮时,将调用此方法。如果您想记录用户与iRate的互动,这将很有用。此方法仅在您使用标准iRate警报视图提示时才调用,如果您直接提供自定义评分实现或调用openRatingsPageInAppStore方法,则不会自动调用。

- (void)iRateUserDidDeclineToRateApp;

当用户拒绝评分应用时,将调用此方法。如果您想记录用户与iRate的互动,这将很有用。此方法仅在您使用标准iRate警报视图提示时才调用,如果您提供自定义评分实现,则不会自动调用。

- (void)iRateUserDidRequestReminderToRateApp;

当用户要求被提醒评分应用时,将调用此方法。如果您想记录用户与iRate的互动,这将很有用。此方法仅在您使用标准iRate警报视图提示时才调用,如果您提供自定义评分实现,则不会自动调用。

- (BOOL)iRateShouldOpenAppStore;

当iRate尝试打开应用商店之前立即调用此方法。如果您希望实现自己的评分页面显示逻辑,则返回NO。

- (void)iRateDidOpenAppStore;

在iRate打开应用商店后立即调用此方法。

本地化

iRate的默认字符串已经为许多语言本地化。默认情况下,iRate将在未本地化或仅本地化至iRate支持语言子集的应用中使用iRate.bundle中的所有本地化。iRate字符串键为

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";

如果您希望iRate仅使用您应用中启用的本地化(例如,如果您的应用只支持英语、法语和西班牙语,iRate将自动为这些语言本地化,但不会为德语本地化,即使iRate包含德语文件),请将useAllAvailableLanguages选项设置为NO。

不建议您修改iRate.bundle中的字符串文件,因为这会使更新到iRate的新版本变得复杂。例外情况是,如果您想向github上iRate项目提交额外语言或改进或更正(这非常受赞赏)。

如果您想在您的应用中为iRate添加额外语言,而不将其提交回GitHub项目,可以直接将这些字符串添加到项目文件夹中适当的Localizable.strings文件中。如果您想替换一些或所有默认的iRate字符串,最简单的方法是将这些字符串复制到您自己的Localizable.strings文件中,然后进行修改。iRate将自动优先使用主应用程序包中的字符串,而不是iRate包中的字符串,因此可以通过这种方式覆盖任何字符串。

如果您不想使用任何默认的本地化,可以完全省略iRate.bundle。请注意,如果您只想支持iRate支持的语言子集,不需要从iRate.bundle中删除其他字符串文件 - 只需将useAllAvailableLanguages设置为NO,iRate将只会使用您的应用已经支持的语言。

仍然支持通过使用个别 setter 方法(见下文)覆盖iRate的默认字符串的老方法,但现在推荐的方法是将那些字符串添加到您项目的Localizable.strings文件中,iRate会自动检测到这些字符串。

+ (void)initialize
{
    //overriding the default iRate strings
    [iRate sharedInstance].messageTitle = NSLocalizedString(@"Rate MyApp", @"iRate message title");
    [iRate sharedInstance].message = NSLocalizedString(@"If you like MyApp, please take the time, etc", @"iRate message");
    [iRate sharedInstance].cancelButtonLabel = NSLocalizedString(@"No, Thanks", @"iRate decline button");
    [iRate sharedInstance].remindButtonLabel = NSLocalizedString(@"Remind Me Later", @"iRate remind button");
    [iRate sharedInstance].rateButtonLabel = NSLocalizedString(@"Rate It Now", @"iRate accept button");
}

示例项目

当您第一次构建和运行基本的Mac或iPhone示例项目时,它将显示一个询问您评估应用的提示。这是因为设置了previewMode选项。

禁用previewMode选项,并试验其他设置,看看应用在实际操作中的表现如何。

高级示例

高级示例展示了如何使用iRateDelegate方法实现一个完全定制的iRate界面。自动提示已被禁用,用户可以通过按下“评估此应用”按钮来自由选择评估应用。

当按下按钮时,应用首先检查应用商店是否可用(如果没有互联网连接或apple.com宕机,它可能不可用),然后启动Mac App Store。

这个例子是针对Mac OS的,但同样的原理也可以应用于iOS。

发行说明

版本1.12.1

  • 修复了由于SKStoreReviewController导致在较旧Xcode版本编译的问题

版本1.12

  • 添加了对iOS 10.3+上的SKStoreReviewController的支持(感谢@EpicDraws!)
  • 添加了加泰罗尼亚语、匈牙利语、克罗地亚语和波斯尼亚语本地化
  • 修复了由于配置错误的NSURLRequest引起的随机崩溃

版本1.11.7

  • 针对iOS 10和Xcode 8进行更新
  • 修复了checkForConnectivity崩溃
  • 添加了芬兰语支持
  • 将Carthage部署目标降低到8.0

版本1.11.6

  • 修复了与iOS 7的兼容性问题

版本1.11.5

  • 现在使用https URL以避免与应用传输安全相关的错误
  • 修复了由于非标准委托实现导致的Swift崩溃
  • 为Gibraltar添加了特殊情况
  • 在最新Xcode中修复了警告信息
  • 添加了Carthage支持
  • 添加了台湾繁体中文(zh-TW)本地化
  • 改进了意大利语本地化
  • 公开了remindLater方法

版本1.11.4

  • 添加了对可能与doWithOpenURL:相关的Apple拒绝问题的修复
  • 添加了对nil本地化问题的修复
  • 添加了马其顿语翻译

版本1.11.3

  • 添加了useUIAlertControllerIfAvailable选项
  • 默认禁用UIAlertController,因为它可能会干扰应用内的控制器逻辑

版本1.11.2

  • 修复了在iOS 7及以下版本上处理警报按钮的关键错误

版本1.11.1

  • 修复了在Mac OS X 10.10 Yosemite上的弃用警告
  • 改进了乌尔都语翻译

版本 1.11

  • 添加了方便方法 promptIfCriteriaMet
  • 添加了作为代理的替代方案 NSNotificationCenter 通知
  • 如果可用,现在使用 UIAlertController 而不是 UIAlertView
  • 修复了使用 Xcode 6 构建时的编译器错误
  • 修复了泰语翻译中的错误
  • 修复了在 iOS 6 上可能导致崩溃的潜在问题
  • 改进了波斯语翻译
  • 现在完全兼容 Swift
  • 添加了 Swift 示例

版本 1.10.3

  • 在升级后修复了评分重置逻辑中另一个错误
  • 改进了土耳其语翻译

版本 1.10.2

  • 修复了升级后应用永远不会提示评分的 bug(前提之前没有做过)
  • 改进了意大利语本地化

版本 1.10.1

  • 修复了一个严重的 bug,防止任何新应用出现评分提示
  • 修复了当 iTunes 返回不良响应时会被无限期缓存的问题

版本 1.10

  • 现在在 iOS 7.1 + 上直接链接到评论页面(Apple 已修复支持)
  • 在应用更新后不会在 daysUntilPrompt 期间中断评分弹出窗口
  • 添加了针对先前评分用户的重新提示选项 promptForNewVersionIfUserRated(默认关闭)
  • 为与 promptForNewVersionIfUserRated 选项一起使用添加了 updateMessage 属性
  • 修复了法语翻译中的拼写错误

版本 1.9.3

  • 如果未找到应用 ID,则不再记录警告(除非在详细模式下)
  • 对越南语进行了较小的翻译修复

版本 1.9.2

  • 添加了孟加拉语、波斯语、印地语、旁遮普语、泰语和越南语的翻译

版本 1.9.1

  • 修复了当设备区域设置为欧洲时获取应用 ID 的问题

版本 1.9

  • iRate 将不再要求用户在每次版本中都对应用进行评分
  • 如果用户选择“不,谢谢”,他们现在将不再被要求再次进行操作
  • 移除了 promptAgainEachVersion 选项

版本 1.8.3

  • 更严格的警告合规性
  • 现在使用宏以避免在导入具有更严格警告设置的 apps 时生成警告

版本 1.8.2

  • 修复了在主线程上调用 checkForConnectivityInBackground 可能导致阻塞用户交互的问题

版本 1.8.1

  • 添加了 iRateDidOpenAppStore 代理方法
  • 如果用户有一个不受支持的语言,语言选择现在可以正确工作
  • 移除了所有 StoreKit 支持,因为 Apple 已禁用 StoreKit 评分面板
  • 调用 openRatingsPageInAppStore 将在不知道的情况下自动查找 appStoreID
  • 改进了在 iOS 模拟器上使用 iRate 时的错误消息
  • 添加了希腊语和斯洛文尼亚语本地化

版本 1.8

  • 应用商店链接在 iOS 7 上工作(目前必须链接到应用主页而不是直接到评论页面——希望能找到替代的直接链接)
  • 如果可用,现在使用 NSJSONSerializer(iOS 4.x 仍将使用旧解析器)
  • 默认情况下不再需要 StoreKit(请参阅 README 获取详细信息)
  • 修复了 iOS 7 的捷克语和奥地利德语区域
  • 移除了 disableAlertViewResizing 属性(不再需要)
  • 改进了捷克语翻译
  • 改进了法语翻译
  • 乌尔都语支持
  • 修复了 iOS 6 和以下版本中 alertview 调整大小的问题
  • 现在符合 -Wextra 警告级别

版本 1.7.5

  • 改进了阿拉伯语翻译
  • 改进了 podspec 文件
  • 移除了 .DS_Store 文件

版本 1.7.4

  • 添加了阿拉伯语翻译
  • 改进了法语翻译
  • 添加了追踪提示显示时的代理方法

版本 1.7.3

  • 添加了斯洛伐克语、捷克语和奥地利语翻译
  • 修复了取消/提醒按钮禁用逻辑中的部分 bug
  • 添加了 podspec 文件

版本 1.7.2

  • 添加了荷兰语翻译
  • iRate 现在可以正确地显示 StoreKit 产品视图控制器,即使已经显示了模态展示的视图控制器

版本 1.7.1

  • 当以iOS6为目标平台时解决废弃警告
  • 添加了iRateDidPresentStoreKitModal和iRateDidDismissStoreKitModal代理方法
  • 当StoreKit无法加载产品信息时添加了额外的错误日志
  • 添加了乌克兰翻译

版本1.7

  • 在iOS 6中,iRate现在可以使用StoreKit API在应用内部直接显示产品页面。
  • iRate现在需要iOS上的StoreKit框架
  • iRate现在需要ARC。要在非ARC项目中使用iRate,请参考README文件中的说明。
  • 停止支持运行Snow Leopard的32位Mac
  • 添加了瑞典翻译

版本1.6.2

  • 修复了已损坏的评级URL(苹果已更改)
  • 添加了丹麦翻译

版本1.6.1

  • 修复了意大利语言文件中的拼写错误

版本1.6

  • 添加了新的本地化系统(请参阅README文件获取详情)
  • 添加了usesPerWeekForPrompt设置
  • 修复了iOS 6中的废弃警告
  • 改进了西班牙语翻译
  • 改进了德语翻译

版本1.5.3

  • 纠正了德语翻译中的minor拼写错误

版本1.5.2

  • 在iOS6上恢复了App Store深链接(在beta版本中不起作用,但现在可以工作了)
  • 添加了promptAgainForEachNewVersion选项以启用/禁用每次应用更新时提示
  • 添加了verboseLogging选项以简化诊断新版本为何没有被正确检测的原因
  • 将debug属性重命名为previewMode,因为它更准确地描述了其功能
  • 添加了简体中文本地化

版本1.5.1

  • 修复了使用Xcode 4.4编译时在iOS 4.x和Mac OS 10.6.x上崩溃的问题

版本1.5

  • 添加了对iOS6的支持。目前在iOS6中似乎无法直接将用户带到评级页面,但iRate现在至少可以在应用页面打开应用商店而没有错误。
  • 修复了应用商店国家选择逻辑中的错误
  • 将appStoreGenre更改为appStoreGenreID,因为它不是区域特定的

版本1.4.9

  • 添加了对没有网络访问权限的沙盒Mac App Store应用的支持
  • 更新了ARC Helper库

版本1.4.8

  • 为连接性检查添加了60秒显式超时
  • 当在进行检查时关闭并重新打开时,iRate现在不会生成多个下载线程
  • 添加了葡萄牙语翻译

版本1.4.7

  • 修复了修正委托方法中设置的某些高级属性可能会被iRate随后覆盖的错误
  • 添加了事件演示示例

版本1.4.6

  • 修复了在摇晃设备时会导致UIAlertView缓慢缩小的奇偶问题
  • 添加了disableAlertViewResizing选项(请参阅README文件获取详情)
  • 添加了Resizing Disabled示例项目
  • 添加了韩语翻译

版本1.4.5

  • 改进了德语、西班牙语、日语、俄语和波兰语翻译
  • 添加了onlyPromptIfMainWindowIsAvailable选项

版本1.4.4

  • 添加了土耳其语本地化
  • 改进了德语翻译
  • 修复了长应用名称的alert布局

版本1.4.3

  • 现在可以再次使用debug来测试尚未进入应用商店的应用的iRate消息。

版本1.4.2

  • 添加了希伯来语本地化
  • 修复了UIAlertView标签缩放问题
  • 修复了一些编译警告

版本1.4.1

  • 添加了防止UIAlertView在横屏模式下折叠的逻辑
  • 添加了俄语、波兰语和繁体中文本地化
  • 改进了日语本地化
  • 现在可以正确地处理nil取消按钮文本

版本1.4

  • 包含了法语、德语、意大利语、西班牙语和日语的本地化
  • iRate在大多数情况下现在完全是零配置!
  • 在大多数情况下,不再需要设置应用商店ID
  • iRate默认文本现在使用“播放”而不是“使用”用于游戏
  • iRate代理现在默认为App Delegate,除非另外指定
  • 默认情况下,iRate不再提示用户对应用进行评分,除非它们正在运行最新版本。

版本 1.3.5

  • 修复了1.3.4中引入的bug,其中提醒按钮在iOS上不会显示。

版本 1.3.4

  • 修复了编译警告。
  • 添加了iRateDidDetectAppUpdate委托方法。
  • 添加了ARC测试示例。

版本 1.3.3

  • 为32位Mac OS构建添加了缺少的ivar。

版本 1.3.2

  • 添加逻辑以防止用户未能关闭一个提示并在下一个提示即将打开之前关闭的情况下显示多个提示。
  • 为iOS5中UIApplicationWillEnterForegroundNotification实现的变化添加了 workaround。

版本 1.3.1

  • 添加了对ARC编译目标的自动支持。
  • 现在需要Apple LLVM 3.0编译目标。

版本 1.3

  • 添加了额外的委托方法,以方便记录。
  • 将禁用属性重命名为promptAtLaunch以提高清晰度。

版本 1.2.3

  • iRate现在使用CFBundleDisplayName来表示应用程序名称(如果可用)
  • 重新组织了示例。

版本 1.2.2

  • 修复了拼写错误的委托方法
  • 修复了在高级Mac项目中即使没有按下按钮也会自动显示评分提示的bug
  • 移除了不需要的项目文件

版本 1.2.1

  • 公开了应该Prompt方法,以便更容易控制何时显示评分提示。
  • MAC_APP_STORE_REFRESH_DELAY增加到5秒以支持旧机器。

版本 1.2

  • 为自定义行为添加了委托和额外的访问器属性。
  • 添加了一个高级示例项目,以演示委托协定的使用。

版本 1.1

  • 现在兼容iOS 3.x
  • 修复了不正确的iPhone评论URL

版本 1.0

  • 首次发布。