跳到正文
返回博客
·约 4 分钟读完

TestFlight 清单:从第一个构建版本到外部测试员

内部和外部测试员、群组、公开链接、TestFlight App 审核、测试信息、90 天过期,以及测试员看不到构建版本的常见原因。

TestFlight 有两类测试员。内部测试员是你 App Store Connect 团队里的人,最多 100 位,构建版本加进他们的群组后不用审核就能测。外部测试员是通过邮件邀请或公开链接加入的任何人,每个 App 最多 10,000 位,构建版本要先通过 TestFlight App 审核才会发给他们。每个构建版本最多可以测试 90 天。外部测试开始前,你需要填好测试版 App 描述、反馈邮箱,并回答加密问题。"测试员看不到构建版本"的问题,大多能从构建版本的状态上找到原因,见文末的表格。

内部测试员和外部测试员

内部测试员外部测试员
是谁能访问你内容的 App Store Connect 用户(角色为 Account Holder、Admin、App Manager、Developer 或 Marketing)你用邮件邀请的人,或通过公开链接加入的人
人数上限100每个 App 10,000
是否需要审核不需要需要,第一个加入外部群组的构建版本会送去 TestFlight App 审核
怎么加入邮件邀请,在 TestFlight App 里接受(Apple TV 上可用兑换码)邮件邀请或公开链接,在 TestFlight App 里接受
标记为"TestFlight Internal Only"的构建版本可以不可以

Apple 的 TestFlight 页面还给了两个对两类测试员都适用的数字:测试员可以在"up to 30 devices"(最多 30 台设备)上使用你的构建版本;"You can share up to 100 builds, and start testing multiple builds at once."(最多可以共享 100 个构建版本,并同时测试多个。)

不在你 App Store Connect 团队里的人不能加进内部群组。想让朋友或用户不经审核就测试,是做不到的:团队以外的测试员都算外部测试员。

群组

构建版本是通过群组发给测试员的。Apple:"Groups are how you organize and distribute builds to testers."(群组用来组织测试员并向他们分发构建版本。)可以建多个群组,每个群组放不同的构建版本。

  • 先建内部群组。 "To create an external group for external testing, you must first create an internal group for internal testing."(要建外部测试群组,必须先建一个内部测试群组。)
  • 一次加一个构建版本。 往群组里加构建版本时,"You can add only one build at a time, but you can add more later."(一次只能加一个,之后可以再加。)
  • 内部群组的新构建版本。 内部群组有一个复选框,勾选后 Xcode 会把每个新构建版本发给群组里的所有人;不勾选,就要你自己一个个加。Xcode Cloud 生成的构建版本,始终要在 App Store Connect 里手动加进群组。
  • 仅限内部的构建版本。 从 Xcode 或 Xcode Cloud 以 TestFlight Internal Only 方式上传的构建版本,构建号下方会标注 internal,只能加进内部群组:"you can't submit them for external testing or to customers"(不能提交外部测试,也不能发布给用户)。
  • 移除构建版本。 "If you remove a build from a group or from testing, testers currently using the build will continue to have access until they switch builds or choose to stop testing your app."(从群组或测试中移除构建版本后,正在使用它的测试员仍可继续使用,直到他们切换构建版本或停止测试。)

Apple 的帮助页没有写群组数量上限。

公开链接

公开链接让人不用你输入邮箱就能加入外部群组。

  • 人数上限。 在 Tester Limit 下可以填"a number between 1 and 10,000"(1 到 10,000 之间的数字),限制通过这个链接加入的人数。
  • 谁能加入。 选 Open to Anyone(任何人)或 Filter by Criteria(按设备或平台筛选,并设定系统版本范围:从某版本到某版本、不低于、不高于,或该平台全部支持的版本)。选了筛选,"You need to add at least one criteria to invite testers."(至少要加一个条件。)
  • 任何人都能转发。 "Keep in mind that anyone can share this link, so testers could potentially join your testing group even if you do not invite them directly."(任何人都能分享这个链接,所以你没直接邀请的人也可能加入。)
  • 你看不到他们是谁。 通过公开链接加入的测试员显示为匿名,但你仍能看到安装日期、使用次数和崩溃次数。
  • 人满了, Apple 建议"disable your link"(停用链接),让后来想加入的人知道已经不再接受新测试员。

什么要送 TestFlight App 审核,什么时候送

  • 只有外部测试需要。 内部测试员不需要审核。构建状态 Ready to Submit 的意思是:"Your build can be distributed to internal testers, or can be submitted to TestFlight App Review for external testing"(可以分发给内部测试员,也可以提交 TestFlight App 审核以进行外部测试)。
  • 第一个构建版本要完整审核。 把构建版本加进外部群组,就会送去审核。Apple:"The first build you submit requires a full review, but later builds for the same version might not."(第一个提交的构建版本需要完整审核,同一版本之后的构建版本可能不需要。)Apple 没有具体说明哪些后续构建版本可以免去完整审核。
  • 每个版本同时只能有一个在审核。 "You can only have one build of each version in review at a time. Once that build is approved, you can submit additional builds."(每个版本同一时间只能有一个构建版本在审核,通过后才能再提交。)
  • 每天六个。 "You can submit up to six builds for TestFlight App Review within a 24-hour period."(24 小时内最多提交六个构建版本送审。)
  • 审核什么。 "Apple reviews the build and its accompanying metadata"(Apple 审核构建版本和随附的元数据),依据是 App 审核指南。
  • 审核通过后, 拥有 Admin 角色的用户会收到邮件。如果你加构建版本时没勾选通知测试员,"you must manually distribute the build to testers after it's approved"(审核通过后要手动分发给测试员)。
  • 被拒的话, 构建版本显示 Rejected,"can no longer be used in TestFlight. To begin testing, upload a new build."(不能再用于 TestFlight,要开始测试需上传新的构建版本。)

Apple 没有公布 TestFlight App 审核通常需要多久。

必须填写的测试信息

外部测试前要在 TestFlight 标签页填写 Test Information(测试信息)(Account Holder、Admin 或 App Manager 可填)。Apple 列出的有:

  • Beta App Description(测试版 App 描述):"This field is required."(必填。)它也会出现在邀请里。
  • Feedback Email(反馈邮箱):测试员在 TestFlight App 里联系你的地址,也是邀请邮件的回复地址。添加外部测试员时,如果缺少 Contact Information(联系信息),Apple 也会要求补上。
  • What to Test(测试内容),每个构建版本单独填:"enter what you want testers to focus on"(写下希望测试员重点关注的内容)。
  • 测试版 App 审核信息:Apple 的 TestFlight 页面说"your beta app description and beta app review information are required in order to share your beta with external testers"(向外部测试员分享测试版,需要测试版 App 描述和测试版 App 审核信息)。Apple 的帮助页没有逐项列出其中的字段。如果你的 App 需要登录,Apple 在 App Store 提交时会要求提供给审核人员可用的账号,这里同样建议准备好。

测试信息可以本地化,并且"You can update this information at any time"(随时可以更新)。Apple 的帮助页没有给出这些字段的字数限制;Apple 公布过的各项限制,可以查 App Store Connect 限制工具。

加密问题

构建版本能被测试之前,App Store Connect 要知道它是否使用加密。没回答的话,构建版本显示 Missing Compliance:"Your build is missing export compliance documentation. Action is needed."(构建版本缺少出口合规文件,需要处理。)在构建版本旁点 Manage 回答问题,或者上传之前已获批的文件。

如果不想每个构建版本都被问一次,Apple 说可以在 Xcode 里的 Info.plist 中声明加密使用情况,这样"eliminates the need to answer encryption questions with each app submission"(每次提交都不用再回答加密问题)。如果你需要获批的合规文件,Apple 会给你一个键值填进 Xcode,效果相同。App 加密与出口合规工具可以帮你判断该怎么回答,以及 Info.plist 里该写什么。

文件交给 Apple 审查期间,状态是 Waiting for Export Compliance Review 或 In Compliance Review,你不需要做什么。

构建版本过期

  • "You can test a build for up to 90 days."(一个构建版本最多可测试 90 天。)之后状态变为 Expired:"has passed its 90-day availability window"(已超过 90 天可用期)。
  • 也可以在构建版本页面点 Expire Build 提前结束测试(Account Holder、Admin 或 App Manager)。之后"The build no longer allows internal and external testers to install it."(内部和外部测试员都不能再安装。)Apple 的页面没有说能否撤销,按不可撤销对待。
  • 如果你不让构建版本过期,又发布了这个版本,已受邀的测试员"will still be able to test your build even after it goes live on the App Store"(即使上架后仍可继续测试)。

测试员看到什么

  • 他们安装免费的 TestFlight App,接受邮件邀请或打开公开链接,然后在里面安装你的 App、发送反馈、获取更新。Apple TV 上可以用兑换码。
  • 邀请里有你的测试版 App 描述;如果你有已获批的版本,还会显示截图和 App 类别(Invitation Experience 下的 App Information 复选框默认勾选)。
  • iOS、macOS、visionOS 上使用 TestFlight 2.3 或更高版本的测试员,可以在 TestFlight App 里或在你的测试版 App 里截图发送反馈。tvOS 和较早 iOS 版本的测试员会把反馈发到你的反馈邮箱。TestFlight 测试员的崩溃日志会发给你。
  • 他们下载的是你 App 的"thinned variants"(瘦身版本);一台设备上 App 和它的 App Clip 只能装其中一个。
  • Mac App 要用 Xcode 13 或更高版本构建,才能使用 TestFlight for Mac。

测试员看不到构建版本的原因

先看 TestFlight 标签页里的状态。Apple 的构建状态:

状态含义怎么办
Missing Compliance加密问题没回答。回答它,或在 Info.plist 里设置,供以后的构建版本使用。
Waiting for Export Compliance Review / In Compliance Review你的文件正在审查。等待。
Ready to Submit内部测试员可用,还没提交外部测试。加进外部群组,送去审核。
Waiting for Review / In Beta Review在 TestFlight App 审核中。等待;通过后外部测试员才能拿到。
Ready to Test已通过,但还没加测试员;也可能你选了自己通知测试员。添加群组或测试员,或手动分发。
Rejected被 TestFlight App 审核拒绝。修改后上传新的构建版本。
Not Available for Testing"the provisioning profile is missing an application identifier"(描述文件缺少应用标识符)。上传包含应用标识符的新构建版本。
Invalid Binary上传不符合要求。修正后重新上传。
Expired超过 90 天,或被你设为过期。上传新的构建版本。

Apple 页面里提到的其他原因:

  • 构建版本标记为仅限内部,而你想把它发给外部群组或外部测试员。
  • 构建版本不在测试员所在的群组里。 Apple:"All testers within this group will have access to the build."(群组内的所有测试员都能访问该构建版本。)其他群组的测试员拿不到,检查群组里的构建版本列表。
  • 公开链接的条件把他们筛掉了(设备或系统版本),或人数已满。
  • 测试员用的是保留域名下的 Managed Apple Account,这种账号"can't be used to test builds"(不能用于测试)。
  • 构建版本上传后还在处理中。 Apple 的构建状态列表里没有处理中这一项,也没说要多久。

如果 TestFlight 版本里 App 内购买加载不出来,那是另一回事,参见TestFlight 或 App 审核中 StoreKit 返回空商品。

常见问题

内部测试员需要 TestFlight App 审核吗?

不需要。Apple 对 Ready to Submit 状态的说明是构建版本"can be distributed to internal testers"(可以分发给内部测试员),不用先审核。审核是给外部测试的。

每个新构建版本都要完整审核吗?

不一定。Apple 说第一个构建版本需要完整审核,"later builds for the same version might not"(同一版本之后的构建版本可能不需要)。哪些可以免去,Apple 没有具体说明。

版本上架后,测试员还能继续用测试版吗?

能,直到过期。Apple:已受邀的测试员"will still be able to test your build even after it goes live on the App Store",而构建版本 90 天后对测试员失效。

送审的构建版本数量有限制吗?

24 小时内最多六个,而且每个版本同一时间只能有一个在审核。

每个构建版本都要回答加密问题吗?

只有在 Info.plist 里没设置时才要。Apple 说在 Info.plist 里设置后,每次提交都不用再回答。

参考资料

均于 2026 年 11 月 1 日阅读。

Apple 的测试员上限、审核规则和状态会变化,具体以上面这些页面的当前内容为准。

作者

独立开发者,在 Obelisk Club 做本地优先的 Mac 与 iOS 效率应用。 关于作者 →