This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
使用 TestFlight 分发 iOS 应用
编辑页面
了解如何通过 TestFlight 将 iOS 构建版本安装到测试人员的设备上,以及何时使用内部 TestFlight 测试或外部 TestFlight 测试。
TestFlight 是 Apple 的内部和 Beta 应用分发服务。创建 iOS 生产版本后,您的应用可以在 App Store 上公开发布之前,通过 TestFlight 到达测试人员的设备。
测试分为两种,区别在于您的构建版本到达应用用户的速度。内部测试面向您自己的 App Store Connect 团队,构建版本处理完成后即可使用。外部测试面向其他任何人。不过,您必须将构建版本添加到 App Store Connect 中的一个群组,而该群组的第一个构建版本必须通过 Apple 的 Beta 应用审核流程。
4 requirements
4 requirements
1.
提交应用到 Apple App Store 需要付费的 Apple Developer 账户。请在 Apple Developer Portal 上注册。
2.
提交第一个构建版本时,eas submit 会自动在 App Store Connect 中创建应用记录。请在
App Store
Connect 中点击 Create app 创建应用。或者,使用 App Store Connect
API 以编程方式创建应用记录,或在 eas.json 的
submit 配置文件中设置 ascAppId,以跳过创建应用记录。
3.
4.
测试人员需要在其 iOS 设备上安装 TestFlight 应用,才能安装和测试您的应用。
快速开始
如果你拥有 Apple Developer 账户,且尚未完成其他设置,只需一条命令,即可在 App Store Connect 上创建应用记录、构建生产版本 .ipa,并将其提交到 TestFlight:
- npx testflight上述命令会创建凭据,在 EAS Build 上运行生产版本构建,并通过 TestFlight 提交以供内部测试。这是使用 EAS CLI 一步完成构建和提交的简写方式。
- eas build --platform ios --auto-submit--auto-submit 标志会自动将完成的构建交给 EAS Submit。你也可以将构建和提交分为两个步骤。如果你已经有生产版本构建,则无需重新构建。直接提交现有构建即可:
- eas submit --platform ios本指南的其余部分将更详细地介绍内部测试和外部测试。
内部测试与外部测试
在你通过 Apple App Store 公开发布应用之前,可以通过 TestFlight 以两种方式将应用分发给测试人员:内部测试和外部测试。两者的区别在于构建版本到达测试人员手中的速度:
| 用途 | 内部测试 | 外部测试 |
|---|---|---|
| 谁可以测试你的应用 | App Store Connect 团队中的用户 | 任何人。测试人员不需要 App Store Connect 账户。 |
| 允许的最大测试人员数量 | 100 | 每个应用 10,000 人 |
| Beta 应用审核 | 每个应用版本的第一个构建版本都必须审核 | |
| 如何邀请测试人员 | 仅限电子邮件 | 电子邮件、导入 CSV 或可共享的公开链接 |
| Beta 应用描述 | 外部测试必需。这是显示在 TestFlight 中的描述。 | |
| 反馈电子邮件 | 外部测试必需。这是显示在 TestFlight 中的电子邮件地址。 | |
| 测试人员收到构建版本的时间 | 处理完成后立即 | Beta 应用审核批准构建版本后 |
| 构建版本有效期 | 从上传之日起 90 天 | 从上传之日起 90 天 |
| 每位测试人员的设备数量 | 30 | 30 |
警告 内部分发并不等同于内部测试。这两个术语听起来非常相似。EAS 内部分发会生成一个通过 ad hoc 或企业证书签名的构建版本,该构建版本通过 URL 安装,并且仅限于已注册的唯一设备标识符(UDID)。TestFlight 内部测试需要使用
"distribution": "store",并且会经过 Apple。
设置内部测试
内部测试面向您自己的 App Store Connect 团队,并且构建完成处理后即可使用。
1
2
等待处理
Apple 会先处理构建,然后才能分发。通常需要 5 到 10 分钟,但没有保证的处理时间。处理完成后,Apple 会通过电子邮件通知您。
应用处理完成后,登录 App Store Connect,选择您的应用,然后前往 TestFlight。您应该会在 iOS Builds 下看到列出的构建。
3
提示:如果您已有内部测试群组,也可以直接从 EAS CLI 指定这些群组。例如,命令eas submit --platform ios --groups "QA Team" --what-to-test "New onboarding flow"会指定名为“QA Team”的内部测试群组,并为构建设置“测试内容”描述。
设置外部测试
外部测试面向 App Store Connect 团队之外的人员。
在 App Store Connect 允许你创建外部群组之前,你必须先创建一个内部群组。
3
常见问题
我需要 Mac 才能使用 TestFlight 分发应用吗?
不需要。eas build 和 eas submit 都可以在 macOS、Linux 和 Windows 上运行。构建会在 EAS Build 基础设施上运行,EAS Submit 会代表你将 .ipa 上传到 App Store Connect。
从内部测试转为外部测试时,我需要重新构建吗?
不需要。将 App Store Connect 中已有的构建添加到外部群组,并提交进行 Beta App Review。只有在应用本身发生变化时,才需要新的构建。
为什么团队成员无法将构建添加到外部群组?
这是因为他们的 App Store Connect 角色不允许执行此操作。Developer 或 Marketing 角色可以管理内部测试,但无法管理外部测试;外部测试需要 Account Holder、Admin 或 App Manager 角色。
凭证也有相同的限制。只有 Account Holder 或 Admin 才能创建 EAS Submit 使用的 App Store Connect API 密钥。完整的权限矩阵请参阅 Apple Developer Program 角色和权限。
TestFlight 中的构建会在 App Store 上发布吗?
不会。发布到 App Store 是一个单独的提交操作,需要你在 App Store Connect 中手动开始。TestFlight 中的构建会一直保留在 TestFlight 中。
发布后测试也不会停止。如果你没有在构建版本于 App Store 上线前将其过期,已经收到邀请的测试人员仍可继续测试该版本。若要停止测试,请前往 TestFlight > 选择构建 > Expire Build。
为什么我的构建卡在 Missing Compliance?
App Store Connect 正在等待你回答出口合规问题,在你回答之前无法将该构建分发给测试人员。你可以在应用配置中回答一次,而不必每次上传时都回答:
{ "ios": { "config": { "usesNonExemptEncryption": false } } }
只有当你的应用没有使用超出 Apple 豁免范围的加密技术时,才能将 usesNonExemptEncryption 设置为 false,例如通过操作系统使用 HTTPS。此声明也涵盖应用所链接的第三方库,并且适用于 TestFlight 构建,而不仅仅是 App Store 发布版本。
我可以从命令行将构建添加到 TestFlight 群组吗?
可以,但仅限内部群组。使用现有内部群组的名称传入 --groups,并使用 --what-to-test 设置测试说明:
- eas submit --platform ios --groups "QA Team" --what-to-test "New onboarding flow"--groups 仅接受内部群组名称。若要将构建添加到外部群组,请使用 EAS Workflows。
我可以自动将构建分发到外部群组吗?
可以,使用 EAS Workflows 中预先打包的 testflight 作业。它会将构建添加到内部和外部群组,设置“What to Test”说明,并提交 Beta App Review:
jobs: build_ios: name: 构建 iOS type: build params: platform: ios profile: production testflight: name: 分发到 TestFlight type: testflight needs: [build_ios] params: build_id: ${{ needs.build_ios.outputs.build_id }} internal_groups: ['QA Team'] external_groups: ['Public Beta'] changelog: | What's new in this release: - New features - Bug fixes
提供 external_groups 时,submit_beta_review 默认为 true。在使用外部群组运行作业前,请在 App Store Connect 中完成 TestFlight 测试信息。