# TestFlight 清单:从第一个构建版本到外部测试员 > 内部和外部测试员、群组、公开链接、TestFlight App 审核、测试信息、90 天过期,以及测试员看不到构建版本的常见原因。 - Canonical page: https://obelisk.club/blog/testflight-checklist-zh - Author: Peter Zhang - Published: 2026-11-01 - Tags: app-store-connect, testflight, app-review, checklist, indie, 中文 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 限制](/tools/app-store-connect-limits)工具。 ## 加密问题 构建版本能被测试之前,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 加密与出口合规](/tools/app-encryption-export-compliance)工具可以帮你判断该怎么回答,以及 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 返回空商品](/blog/storekit-products-empty-app-review-testflight-zh)。 ## 常见问题 ### 内部测试员需要 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 日阅读。 - [TestFlight overview](https://developer.apple.com/help/app-store-connect/test-a-beta-version/testflight-overview),App Store Connect 帮助 - [Add internal testers](https://developer.apple.com/help/app-store-connect/test-a-beta-version/add-internal-testers),App Store Connect 帮助 - [Invite external testers](https://developer.apple.com/help/app-store-connect/test-a-beta-version/invite-external-testers),App Store Connect 帮助 - [Provide test information](https://developer.apple.com/help/app-store-connect/test-a-beta-version/provide-test-information),App Store Connect 帮助 - [Add testers to builds](https://developer.apple.com/help/app-store-connect/test-a-beta-version/add-testers-to-builds),App Store Connect 帮助 - [View build status and metrics](https://developer.apple.com/help/app-store-connect/test-a-beta-version/view-build-status-and-metrics),App Store Connect 帮助 - [Stop testing a build](https://developer.apple.com/help/app-store-connect/test-a-beta-version/stop-testing-a-build),App Store Connect 帮助 - [Provide export compliance information for beta builds](https://developer.apple.com/help/app-store-connect/test-a-beta-version/provide-export-compliance-information-for-beta-builds),App Store Connect 帮助 - [Overview of export compliance](https://developer.apple.com/help/app-store-connect/manage-app-information/overview-of-export-compliance),App Store Connect 帮助 - [App build statuses](https://developer.apple.com/help/app-store-connect/reference/app-uploads/app-build-statuses),App Store Connect 帮助 - [TestFlight tester information](https://developer.apple.com/help/app-store-connect/reference/testflight/testflight-tester-information),App Store Connect 帮助 - [TestFlight](https://developer.apple.com/testflight/),Apple Developer *Apple 的测试员上限、审核规则和状态会变化,具体以上面这些页面的当前内容为准。*