TestFlight 是每一次 iOS 发布在进入 App Store 之前都要经过的分发通道:它把构建版本交到真实测试者手中的真实设备上,而不必先把应用公开发布。2026 年的机制已经相当稳定,而且 Apple 全部写进了官方文档:最多 100 位内部测试者,构建版本一处理完就能安装;最多 10,000 位外部测试者,但应用加入分组后的第一个构建版本必须先通过 App Review 审核;以及一个硬性的 90 天窗口,到期后该构建版本对所有人都不再可用。很多教程出问题,是因为把 TestFlight 当成了「传文件」的工具——它其实是一套内嵌在 App Store Connect 里的测试环境,自带审核门禁、自带必须填写的信息项、自带过期时钟。

本篇按 Apple 官方 App Store Connect 帮助文档的真实顺序展开:填写测试信息、上传构建版本并完成出口合规、邀请内部测试者、邀请外部测试者、通过审核、分发邀请、收集反馈,最后在 90 天到期之前主动结束测试,而不是等时钟替你结束。下文出现的每一个流程与每一个数字都来自 Apple 官方文档,并且尽量引用原文数值而非转述。


一、TestFlight 是什么,以及它不是什么

TestFlight 用来分发应用的 beta 构建版本、管理测试者并收集反馈。测试者先在自己的 iPhone、iPad、Mac、Apple TV、Apple Vision Pro 或 Apple Watch 上安装免费的 TestFlight App,接受邀请后即可收到你分配给其所在分组的构建版本。Apple 对目标的表述很直白:持续改进应用、持续分发构建版本,直到问题解决,然后再提交审核。

它不是把成品绕开 App Store 直接分发的通道。beta 构建版本同样受 App Review 指南约束,应用在分组里的第一个构建版本会被送审;一款只存在于 TestFlight 的应用,也不能当成长期分发渠道。不容易出错的心智模型是:TestFlight 是一间有门卫的排练厅,不是一扇侧门。

二、前置条件:账号、应用记录与构建版本

三、第 1 步:填写测试信息(这是必填项,不是装饰)

在邀请任何人之前,App Store Connect 要求先补齐测试者与审核员都会读到的 beta 信息。

测试信息随时可以修改,改动会同步显示在 TestFlight App 里。请在第一次外部审核之前认真填完——描述过于单薄,是少数几种「自己给自己添堵」的审核变慢原因。

四、第 2 步:上传构建版本并完成出口合规

把构建版本上传到 App Store Connect——Xcode、Transporter 或你的 CI 流水线——然后等它处理完成。上传与处理是两个不同状态,对着尚未处理完的构建版本发邀请,是发不出去的。

接着处理加密问题,这一步卡住的首次使用者比任何其他环节都多。Apple 会针对每个构建版本询问:应用是否使用加密、如何使用。官方给出的填写方式有三种:

  1. 在 TestFlight 分区里针对该构建版本点 Manage,逐条回答问题。
  2. 上传此前已获批的应用加密文档;或按 Go to App Encryption Page 拿到 Apple 给出的 key value 并填入 Xcode,此后这个应用不必再逐次回答。
  3. 在应用的 Info.plist 中声明不使用加密、或属于免于提交文档的情形——Apple 提供这个设置的目的,正是免去每次提交都要回答。

构建版本长期停在「Waiting for Review」而迟迟没有审核员,很常见的原因是它在等出口合规。先看加密状态,再考虑开支持工单。

五、第 3 步:内部测试——最多 100 人、不经审核、几分钟即可开测

内部测试是整个发布链里最快的一环,也是唯一没有审核门禁的一环。

  1. 在 App Store Connect 打开应用,进入 TestFlight 分区。
  2. 在侧边栏 Internal Testing 下新建或选择分组。
  3. 添加最多 100 位内部测试者(拥有内容访问权限的成员),点 Add。
  4. 把构建版本分配给该分组。测试者会收到邀请邮件,在 TestFlight App 里接受,或用邮件中的兑换码接受。

Apple 关于时限的原文值得读两遍:内部测试者可以在 90 天内下载并测试所有构建版本。另外要注意「移除」的真实含义:把构建版本从分组中移除后,正在使用它的测试者仍可继续访问,直到他们切换构建版本或主动停止测试——移除并不等于吊销。

六、第 4 步:外部测试——最多 10,000 人,以及首个构建版本的审核

外部测试是 TestFlight 与 App Review 相遇的地方。每个应用最多可邀请 10,000 位外部测试者,可以来自组织之外。换来的是门槛:

外部审核比 App Store 审核轻,但它不是绕行通道:同一套指南依然适用,beta 也不是试探政策容忍度的地方。

七、第 5 步:邀请方式——邮件、兑换码与公开链接

测试者要先安装免费的 TestFlight App,然后才能接受邀请。

两条实践原则:公开链接不要放在长期可见的位置(它是测试渠道,不是下载页);邀请要与审核同步规划,指向未过审构建版本的链接等于没有链接。

八、第 6 步:反馈、指标与主动结束测试

九、90 天时钟:构建版本过期如何决定你的上传排期

每个 TestFlight 构建版本最多可测试 90 天,之后对测试者不再可用。就是这一个数字,决定了排期上的几个关键判断:

实用规则:把第 75 天当成截止日。如果发布日期在它之后,就提前上传下一个 beta 构建版本——因为「测试者打开 TestFlight 看到一个已过期的构建版本」这种故障,只会在你最尴尬的时候才被发现。

十、beta 构建版本必须守的几条规则

TestFlight 是 Apple 生态内的测试环境,因此也按测试环境来管理:

十一、KappS 在这里做什么

TestFlight 位于发布链的前端,正因为如此,这里任何一个本可避免的错误代价都不小:开发者账号、应用记录、签名材料、税务与银行资料、提交动作,必须一一对齐,构建版本才可能被测试,更不用说发布。KappS 帮助开发者在这条链上准备并提交合规材料:核对账号、应用与构建版本指向同一个真实发布者,在审核员或 90 天时钟发现之前,把不一致的地方修掉。

我们不做的是:用别人的账号杜撰一个测试通道,或用 TestFlight 绕过 App Review。一个 beta 计划的可信度,取决于它背后的账号,而那个账号必须是你自己的。

资料来源(Apple 官方文档):App Store Connect 帮助 — TestFlight 概述;提供测试信息;添加内部测试者;邀请外部测试者;为 beta 构建版本提供出口合规信息;停止测试某个构建版本;App Review 指南。(developer.apple.com)