iLink 是一个库,帮助您在应用程序内为任何用途建立正确的 App Store 链接(适当的评分链接、应用的分享链接或开发者资料页面的链接),这些都可以在不了解应用的 Apple ID 或开发者账户详情的情况下完成(通常您 beforehand 应该设置它,但不再需要这样做)。此外,此库还会提示用户更新应用到 App Store 上的最新版本。如果存在更新,还可以发起本地通知(后台拉取)。它在 iOS 和 Mac OS-X 上都适用,只需直接将库的 2 个文件放到您的项目中,使用提供的功能即可打开应用页面或开发者页面,无需事先设置。
请检查示例应用程序(iOS/Mac)以快速集成。
注意:“支持”意味着该库已测试与此版本兼容。而“兼容”意味着该库应该在此操作系统版本上运行(即它不依赖于任何不可用的 SDK 功能),但不再进行兼容性测试,可能需要调整或错误修复才能正常运行。
iLink 需要 ARC。如果您希望在非 ARC 项目中使用 iLink,只需将 -fobjc-arc 编译器标志添加到 iLink.m 类中。为此,请转到目标设置中的构建阶段选项卡,打开编译源文件组,双击列表中的 iLink.m,然后在弹出窗口中输入 -fobjc-arc。
如果您希望将整个项目转换为 ARC,请取消注释 iLink.m 中的 #error 行,然后在 Xcode 中运行 Edit > Refactor > Convert to Objective-C ARC... 工具,并确保您希望使用 ARC 的所有文件都处于选中状态(包括 iLink.m)。
iLink 使用内部线程以避免阻塞 UI,但 iLink 的所有外部接口都不是线程安全的,您不应在主线程以外调用任何方法或设置任何属性。
要将 iLink 安装到您的应用程序中,将 iLink.h 和 .m 文件拖动到您的项目中。
您还可以使用 cocoapods(推荐)通过在 podfile 中添加以下行来完成此操作
pod 'iLink', '~> 1.0.5'
iLink 通常不需要进行任何配置,它将自动运行,使用应用程序的包 ID 查找 App Store 上的应用 ID。
注意:如果您在Mac和iOS应用商店中都发现了具有匹配包ID的应用(即使它们使用不同的字母大小写),查找机制将不起作用,您需要手动设置appStoreID属性,该属性是一个数字ID,在设置应用后可在iTunes Connect中找到。另外,如果您正在创建一个沙箱型Mac应用并且您的应用没有请求网络访问权限,那么您也需要设置appStoreID,因为它不能从iTunes服务中检索。
如果您希望自定义iLink,最佳时机是在应用启动完成之前。最简单的方法是将iLink配置代码添加到您的AppDelegate的initialize
方法中,如下所示
#import "iLink.h"
+ (void)initialize
{
//configure iLink
[iLink sharedInstance].globalPromptForUpdate = YES; // If you want iLink to prompt user to update when the app is old.
}
iLink用于使用以下方法打开App页面、开发者简介或评分页面:
--- 应用链接
- (void)iLinkOpenAppPageInAppStore;
此方法根据iLink运行的平台,以适当的方式在Mac或iPhone应用商店中打开应用页面。重要的是,这将直接打开商店,而无需首先打开Safari。
- (NSURL *)iLinkGetAppURLforLocal;
此方法将创建本地打开应用商店的相关URL(建议使用iLinkOpenAppPageInAppStore打开商店,而不是获取链接)。如果想要在应用内部手动打开,可以使用此方法。
- (NSURL *)iLinkGetAppURLforSharing;
此方法将创建社交网络/电子邮件等中分享的适当链接。如果你想在应用外部分享链接,请使用此方法。
- (void)iLinkOpenAppPageInAppStoreWithAppleID:(NSUInteger)appStoreIDtoOpen;
此方法将创建对应于具有Apple ID的应用的适当链接(appStoreIDtoOpen)。要打开另一个特定的应用(例如付费版本或任何其他应用引用),请使用此方法。代码将识别这是iOS应用还是Mac应用。但是请注意,要给每个应用发送正确的ID(由于写这篇文章的时候,Mac和iOS应用的Apple ID并不相同,所以您需要检查您的代码是否支持同时处理这两个平台)。
--- 开发者链接
- (void)iLinkOpenDeveloperPage;
此方法将以适当的方式在Mac或iPhone应用商店中打开开发者页面,具体取决于iLink运行的平台。重要的是,这将直接打开商店,而无需首先打开Safari。
- (NSURL *)iLinkGetDeveloperURLforLocal;
如果您想自己打开开发者URL(例如,如果您想在应用内部打开该页面,而不是使用iLinkOpenDeveloperPage方法),则请使用此方法。
- (NSURL *)iLinkGetDeveloperURLforSharing;
此方法以最佳方式返回开发者简介的URL,用于分享。如果您想在外部(例如社交网络上)分享链接,请使用此方法。
--- 评分链接
- (void)openRatingsPageInAppStore;
此方法根据iLink运行的平台,在Mac或iPhone应用商店中打开应用的评分页面。此方法不会检查机器是否有网络访问或应用商店是否可用。它也不会调用-iLinkShouldOpenAppStore
委托方法。您应使用此方法而不是ratingURL属性来打开评分页面,因为启动应用商店的过程通常比仅打开URL要复杂得多。请注意,此方法依赖于appStoreID
,该信息只有在查询iTunes服务器后才能获取。如果您在调用此方法之前没有先进行更新检查,您将需要自己设置appStoreID
属性,否则可能会使方法花费一些时间来执行网络调用,或者完全失败。成功时,此方法将调用-iLinkDidOpenAppStore
委托方法。在失败时,将调用-iLinkCouldNotConnectToAppStore:
委托方法。
- (NSURL *)iLinkGetRatingURL;
此方法返回评分当前应用的URL(如果您的代码想要对它做些智能处理)。
要配置iLink,有一些iLink类的属性可以改变iLink的行为和外观。这些属性大部分应该很容易理解,但它们在下面有文档说明。
@property (nonatomic, assign) BOOL globalPromptForUpdate;
这会设置是否让iLink自动检查iTunes上是否有应用的更新,并提示用户更新。默认设置为“是”(YES),这意味着如果有应用的更新,iLink会自动询问用户更新,提示将包括1天的提醒(用户按下“稍后提醒”后)。
@property (nonatomic, assign) BOOL aggressiveUpdatePrompt;
这会设置是否让iLink自动检查iTunes上是否有应用更新并始终提示用户更新。默认设置为“否”(NO),如果设置为“是”(YES),意味着如果有应用的更新,iLink会自动询问用户更新,提示将只包括“立即更新!”选项(用户不更新将无法访问应用)。请谨慎使用此选项。
@property (nonatomic, assign) NSUInteger appStoreID;
这应匹配您应用的iTunes应用ID,您可以在设置完应用后从iTunes Connect获取该应用ID。此值通常不需要,通常仅在您的Mac和iOS应用的bundle ID冲突或Sandboxed Mac应用在网络权限方面有问题(因为它无法使用iTunes服务自动检索appStoreID)时才需要。
@property (nonatomic, copy) NSString *appStoreCountry;
这是指定要检查的iTunes商店的两位字母国家代码。它自动从设备区域设置中设置,所以大多数情况下不需要更改。您可以选择将其覆盖为指向美国商店或其他特定商店,如果您的应用仅在某些国家可用,这可能是个好主意。
@property (nonatomic, copy) NSString *applicationName;
这是在iLink警报中显示的应用名称。它自动从应用程序的info.plist中设置,但您可能希望用更短或更长的版本覆盖它。
@property (nonatomic, copy) NSString *applicationBundleID;
这是应用程序的bundle ID,用于从iTunes检索appStoreID
和appStoreGenreID
。这自动从应用的info.plist中设置,所以除了测试目的之外,通常不需要更改。
@property (nonatomic, assign) float remindPeriod;
应用在提醒用户更新之前应该等待的时间长度(以天为单位)。零值表示在下次启动时提醒用户。请注意,此值优于其他标准,所以即使在提醒期间发布了新版本,应用也不会在此期间提示更新。默认为1天。
@property (nonatomic, copy) NSString *messageTitle;
更新提示显示的标题。如果您不想显示标题,则将其设置为@""
;
@property (nonatomic, copy) NSString *message;
更新提示消息。这应该是礼貌和礼貌的,但不要过于冗长。如果您不想显示消息,则将其设置为@""
;
@property (nonatomic, copy) NSString *cancelButtonLabel;
用于关闭更新提示但不更新应用的按钮标签。
@property (nonatomic, copy) NSString *updateButtonLabel;
用户按下更新应用的按钮的标签。
@property (nonatomic, copy) NSString *remindButtonLabel;
用户按下如果不立即更新应用,但希望在将来收到提醒的按钮的标签。如果不想显示“提醒我”按钮(例如,如果屏幕空间不足),则将其设置为@""
。
@property (nonatomic, assign) BOOL useAllAvailableLanguages;
默认情况下,iLink将使用iLink.bundle中的所有可用语言,即使是在不支持本地化的应用中也是如此。如果您希望将iLink限制为仅使用与您的应用程序已支持相同集的语言,则将此属性设置为“否”(NO)。(默认为“是”)。
@property (nonatomic, assign) BOOL onlyPromptIfMainWindowIsAvailable;
此设置仅适用于Mac OS。默认情况下,在Mac OS上,iLink更新警报以通知形式显示在主窗口上。有些应用程序没有主窗口,因此此方法不适用。对于此类应用程序,请将此属性设置为NO,以允许iLink更新警报以常规模态窗口显示。
@property (nonatomic, assign) NSString *linkParams;
默认情况下,iLink会使用默认参数与App Store协同工作。如果您想更改发送到商店的参数(例如,如果您有合作伙伴代码或其他任何特定的重要参数),请通过更改此属性来操作。
@property (nonatomic, assign) BOOL promptAtLaunch;
将此设置为NO以禁用在应用程序启动或从后台返回时自动出现的更新提示。更新标准将继续跟踪,但在此设置生效期间,不会自动显示提示。如果您希望手动控制更新提示的显示,可以使用此选项。
@property (nonatomic, assign) BOOL verboseLogging;
此选项将导致iLink将有关提示决策过程的详细日志发送到控制台。如果您的应用程序在您期望的情况下没有正确提示更新,这将帮助您了解原因。详细日志记录在调试版本中默认启用,在发布和部署版本中禁用。
@property (nonatomic, assign) BOOL previewMode;
如果设置为YES,iLink将在启动时始终显示更新提示,无论应用程序使用时间长短或是否最新版本。在测试期间,请使用此选项检查消息是否可读和配置是否正确,但在最终发布时请禁用它(默认为NO)。
@property (nonatomic, assign) id<iLinkDelegate> delegate;
您提供的一个实现了以下协议的对象iLinkDelegate
,以下有说明。使用此选项检测和/或覆盖iLink的默认行为。默认为App Delegate,因此如果您将您的App Delegate用作iLink代理,则不需要设置此属性。
iLinkDelegate协议提供了以下方法,可用于拦截iLink事件和覆盖默认行为。所有方法都是可选的。
- (void)iLinkDidFindiTunesInfo;
当iLink成功从iTunes获取所有应用程序数据后,将调用此方法。重要:为了万无一失,建议在调用此方法后仅使用iLink提供的链接。
- (void)iLinkCouldNotConnectToAppStore:(NSError *)error;
如果iLink无法连接到App Store,则会调用此方法,通常是因为网络连接出现问题。如果由于沙箱权限,您的应用程序无法访问网络,这也可能导致触发,在这种情况下,您需要手动设置appStoreID,以便iLink仍可正常工作。
- (BOOL)iLinkShouldPromptForUpdate;
如果希望iLink在检测到有更高版本可用时(仅当当前版本较旧时)提示用户更新应用程序,则应返回YES。
- (void)iLinkDidDetectAppUpdate;
如果iLink检测到自上次启动以来应用程序已更新,则会调用此方法。
- (void)iLinkDidOpenAppStore;
在显示App Store中的应用程序页面之前,将调用此方法。
- (void)iLinkDidPromptForUpdate;
在显示更新提示之前立即调用此方法。如果您使用分析来跟踪有多少用户看到更新提示并前往应用商店,这将很有用。这可以帮助您微调何时以及如何显示提示。
- (void)iLinkUserDidAttemptToUpdateApp;
当用户在更新提示中按更新按钮时,会调用此方法。如果您想记录用户与iLink的互动,这将很有用。
- (void)iLinkUserDidDeclineToUpdateApp;
当用户拒绝更新应用程序时,会调用此方法。如果您想记录用户与iLink的互动,这将很有用。
- (void)iLinkUserDidRequestReminderToUpdateApp;
当用户طلبreme}er以提高更新应用程序时,会调用此方法。如果您想记录用户与iLink的互动,这将很有用。
当您第一次构建和运行基本的Mac或iPhone示例项目时,它会显示一个警告提示您更新应用程序。这可能是因为已设置previewMode选项。
请注意关闭previewMode选项(如果已启用)并调整其他设置以查看应用程序的实际行为。