分发包含指向你网站的链接的“阅读器”App
阅读器 App 是指将提供以下一种或多种数字内容类型作为其主要功能的 App:杂志、报纸、图书、音频、音乐或视频。通过阅读器 App,用户可以登录他们在 App 之外创建的账户,从而可以在自己的 Apple 设备上阅览和畅读先前购买的媒体内容或内容订阅。如果你希望你的阅读器 App 还提供指向你网站的链接,以便用户在网站上创建和管理账户,请进一步了解关于请求 External Link Account 授权、使用准则和实现的详细信息。
请求 External Link Account 授权
如果你对使用这一授权感兴趣,可以先提交申请表。你必须是 Apple Developer Program 中的账户持有人,回答一些关于你的 App 的问题,并同意该授权的条款和条件。授权请求需对应套装 ID (App 的唯一标识符) 来提出,且分配的授权只能与套装 ID 所关联的单一二进制文件一起使用。为了符合条件,你的 App 必须:
- 提供以下一种或多种数字内容类型作为 App 的主要功能:杂志、报纸、图书、音频、音乐或视频。
- 允许用户登录账户。
- 允许用户在登录后访问先前在 App 外 (例如在你的网站上) 购买的内容或服务。
- 在使用 External Link Account 授权时,不在 iOS、iPadOS 或 Apple tvOS 上提供 App 内购买项目。
- 不提供实时一对一服务 (例如,提供辅导服务、医疗咨询、看房服务或健身训练)。
注:如果 App 允许用户访问音乐或视频等数字内容,但提供这类访问并非其主要功能,则它们不会被视为阅读器 App 且不符合使用 External Link Account 授权的条件。例如,允许用户在线播放音视频内容的社交网络 App 并不符合条件。
在 Xcode 中配置和启用授权
在你收到电子邮件确认授权已分配至你的账户,且你已在“证书、标识符和描述文件” 中配置了 App 的 App ID 来支持这一授权后,你需要更新你的 Xcode 项目、授权 plist 文件和 Info.plist 文件以列出授权和元数据。
要进行这些更新:
- 在项目导航器 中,选择 .entitlements 文件。在 Xcode 13 或更高版本中,文件名以 图标作为前缀
- 在授权 plist 文件中,将光标悬停在“Entitlements File”(授权文件) 行上并点按添加按钮 (+) 以添加一个新的授权键值对。
- 为授权提供以下值:
- Key (键):com.apple.developer.storekit.external-link.account
- Type (类型):Boolean (布尔)
- Value (值):True
- 按照下方“更新你的 Info.plist 文件”中所述,在你的 Info.plist 文件中提供所需的元数据。
下次在 Xcode Organizer 中针对你的设备或分发请求进行构建时,Xcode 将检测到 .entitlements 文件与缓存的预置描述文件不匹配,并将根据最新的 App ID 配置请求新的预置描述文件以完成代码签名过程。
更新你的 Info.plist 文件
每个授权对必须输入到 App 的 Info.plist 文件中的数据都有特定的要求。
若要更新这个文件的数据,你需要:
- 从项目导航器中选择 Info.plist 文件。
- 为这个授权提供以下值:
- Key (键):SKExternalLinkAccount
- Type (类型):Dictionary (字典),带有字符串值
- Key (键):区域代码作为键,单个 URL 作为值。它必须包含一个带有字符串 * 且映射到默认 URL 的键。
- Value (值):单个目标 URL (你的网站链接)
注:任何时候,你在 Xcode 中向 Info.plist 文件提供的 URL 都必须与你提交至 App 审核的 App 二进制文件中的值相匹配。确保每个值都是符合以下条件的字符串:
- 使用 https 方案;
- 构成一个有效的绝对 URL;
- 不包含查询参数;以及
- 包含 1,000 个或更少的 ASCII 字符。
了解 App 和链接要求
除了为你的 App 启用授权和实现所需的 External Link Account API 之外,你还必须遵循旨在帮助保护隐私和安全、防止诈骗和欺诈活动以及保证整体体验质量的使用要求。在阅读器 App 中提供的任何链接都必须:
- 链接到你拥有或负责的网站;
- 在设备上的默认浏览器中打开一个新窗口,不得打开网页视图;
- 不得在 URL 中传递附加参数,以便保护用户 (例如,他们的隐私);
- 随你的阅读器 App 一起提交至 App Store,并且在 URL 发生更改时应重新提交;
- 不得包含或使用含有网站上所提供项目价格的语言 (可接受的语言包括“前往 example.com 创建或管理你的账户”);
- 采用标准的 HTML 链接格式 (即蓝色下划线文本) 并包含网站的域名;
- 每个 App 页面仅显示一次,并且在各种情况下必须显示相同的信息;
- 在提交至 App Store 之前,在 App 的 Info.plist 中的 external-link.account 键值中静态定义;
- 直接前往你的网站,没有任何重定向、中间链接或着陆页面。
系统要求
只要是在支持 App Store 的任何国家或地区内分发的获批准阅读器 App,均可使用 External Link Account 授权。此授权与运行 iOS 和/或 iPadOS 的设备,或者运行 Apple tvOS 16.4 或更高版本的设备兼容。
实现 App 内模态表单
使用 StoreKit API。每次有人轻点指向你网站的链接创建账户或管理现有账户时,你的 App 都必须在链接至外部之前显示 App 内的插播式模态表单。你的 App 必须调用 canMakePayments 并在显示这一表单之前确认用户有权进行支付。
遵循模态表单详细信息。在 iOS 16 和/或 iPadOS 16 或更高版本,以及 Apple tvOS 16.4 或更高版本中,你可以使用 External Link Account API 来实现相关功能。对于运行 iOS 和 iPadOS 较早版本的设备,你需要完全按照下方提供的模态表单设计和文本来实现模态表单。
支持多个语言区。要包含网站的特定语言区版本的 URL,你需要将它们作为字典 (其中包含每个区域对应的键和关联的 URL 字符串值) 包含在 App 使用的 Info.plist 文件中。此外,在模态表单的实现中使用 Apple 提供的语言区文本字符串。
在 App Store Connect 中提交你的 App 以供审核
在 App Store Connect 中提交你的 App 二进制文件以供审核时,请确保遵守授权的条款和条件、《App 审核指南》以及《Apple Developer Program 许可协议》。
此外,你将需要确认:
- 你的 App 内模态表单已得到正确实现和测试。
- 你的 App 链接到的网站运行完全正常。
- 在你的提交中包含 App 的 UI 截屏,在其中你向用户进行了必要的披露。
如果你提交的信息不完整,审核时间可能会延迟,或你的 App 可能会被拒。审核完成后,App 在 App Store Connect 中的状态会更新,你也会收到相应通知。
常见问题解答
我有一个已在 App Store 上发布的阅读器 App。我是否需要使用授权?
不需要。External Link Account 授权是可选的,只有那些希望从 App 内链接至外部网站进行账户创建和管理的阅读器 App 才需要申请该授权。根据准则 3.1.3(a),各种阅读器 App 可以继续为使用免费版本的用户提供账户创建功能,并为 App 中的现有用户提供账户管理功能。
我可以在我的 App 元数据中包含指向我的网站的链接,用于账户创建和管理吗?
不可以。阅读器 App 只能使用 External Link Account 授权从 App 内链接至外部网站进行账户创建和管理。这为离开 Apple 生态系统的用户提供了更加安全和透明的体验。
我在 App Store 上分发了多个阅读器 App。我可以在多个 App 中使用同一个已分配授权吗?
不可以。External Link Account 授权按套装 ID (App 的唯一标识符) 分配,且分配的授权只能与套装 ID 所关联的单一二进制文件一起使用。如果你有多个阅读器 App,你需要为每个阅读器 App 提出单独的授权请求。
我可以在提供 App 内购买项目的 App 中使用这一授权来链接至外部网站进行账户创建和管理吗?
在 iOS、iPadOS 或 Apple tvOS 上提供 App 内购买项目的 App 不符合授权条件。
如果我的 App 已在 App Store 上,我可以将它更改为阅读器 App 吗?
这要视情况而定。随着开发者添加新的内容和功能,App 的商业模式可能也会随之改变。但是,提交会显著改变 App 主要功能的更新并不合适,因为这样做会给现有用户带来不好的体验。如果你有一个新的 App 概念,想要在 App Store 上进行分发,我们建议你创建新的 App 记录和二进制文件以提交审核。
我获得了 External Link Account 授权,但我在提交 App 进行审核时,被告知它不是符合条件的阅读器 App。如何解决这个问题?
向 App Store 提交的所有内容都须经 App Review 批准。如果你的 App 在 App 提交过程中被发现不符合阅读器 App 的条件,只要它包含 External Link Account 授权,就不会获得批准。有关更多信息,请参考 App Store Connect 中的信息。
我的 App 是否需要使用 External Link Account API?
包含 External Link Account 授权并在 iOS 16、iPadOS 16 或 Apple tvOS 16.4 或更高版本上运行的阅读器 App 必须使用 External Link Account API。如果你的 App 已在 App Store 上架,你需要在你的 App 中实现该 API,并在 2022 年 10 月 12 日之前提交更新。