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 应用审核流程。

Prerequisites

4 requirements

1.

付费 Apple Developer 账户

提交应用到 Apple App Store 需要付费的 Apple Developer 账户。请在 Apple Developer Portal 上注册。

2.

App Store Connect 中的应用记录

提交第一个构建版本时,eas submit 会自动在 App Store Connect 中创建应用记录。请在 App Store Connect 中点击 Create app 创建应用。或者,使用 App Store Connect API 以编程方式创建应用记录,或在 eas.jsonsubmit 配置文件中设置 ascAppId,以跳过创建应用记录。

3.

生产版本

TestFlight 只接受在 eas.json 中设置了 "distribution": "store" 的构建版本,该设置是 EAS Build production 配置文件的默认值。有关操作说明,请参阅构建生产应用

4.

TestFlight 应用

测试人员需要在其 iOS 设备上安装 TestFlight 应用,才能安装和测试您的应用。

快速开始

如果你拥有 Apple Developer 账户,且尚未完成其他设置,只需一条命令,即可在 App Store Connect 上创建应用记录、构建生产版本 .ipa,并将其提交到 TestFlight:

Terminal
npx testflight

上述命令会创建凭据,在 EAS Build 上运行生产版本构建,并通过 TestFlight 提交以供内部测试。这是使用 EAS CLI 一步完成构建和提交的简写方式。

本指南的其余部分将更详细地介绍内部测试和外部测试。

内部测试与外部测试

在你通过 Apple App Store 公开发布应用之前,可以通过 TestFlight 以两种方式将应用分发给测试人员:内部测试外部测试。两者的区别在于构建版本到达测试人员手中的速度:

用途内部测试外部测试
谁可以测试你的应用App Store Connect 团队中的用户任何人。测试人员不需要 App Store Connect 账户。
允许的最大测试人员数量100每个应用 10,000 人
Beta 应用审核每个应用版本的第一个构建版本都必须审核
如何邀请测试人员仅限电子邮件电子邮件、导入 CSV 或可共享的公开链接
Beta 应用描述外部测试必需。这是显示在 TestFlight 中的描述。
反馈电子邮件外部测试必需。这是显示在 TestFlight 中的电子邮件地址。
测试人员收到构建版本的时间处理完成后立即Beta 应用审核批准构建版本后
构建版本有效期从上传之日起 90 天从上传之日起 90 天
每位测试人员的设备数量3030

设置内部测试

内部测试面向您自己的 App Store Connect 团队,并且构建完成处理后即可使用。

1

构建并提交

要将构建上传到 App Store Connect 进行内部测试,请确保您已创建生产构建。完成后,运行以下命令将其提交到 TestFlight:

Terminal
eas submit --platform ios

2

等待处理

Apple 会先处理构建,然后才能分发。通常需要 5 到 10 分钟,但没有保证的处理时间。处理完成后,Apple 会通过电子邮件通知您。

应用处理完成后,登录 App Store Connect,选择您的应用,然后前往 TestFlight。您应该会在 iOS Builds 下看到列出的构建。

3

创建内部测试群组

在 App Store Connect 中,前往 TestFlight > 点击 Internal Testing 旁边的加号 (+) 图标 > 输入 Internal Group 的名称 > 点击 Create

然后,点击 Testers 旁边的加号 (+) 图标,将测试人员添加到群组中。您可以选择 App Store Connect 团队成员的电子邮件地址,然后点击 Add,将他们添加为测试人员。测试人员会收到测试您应用的电子邮件邀请。

4

邀请测试人员

在测试人员的设备上,点击邀请电子邮件中的链接。应用会显示在 TestFlight 中,测试人员可以从那里安装应用。

设置外部测试

外部测试面向 App Store Connect 团队之外的人员。

1

创建外部群组

App Store Connect > TestFlight 中,点击 External Testing 旁边的加号 (+) 图标 > 输入外部群组的名称 > 点击 Create

2

使用现有的内部构建版本

你可以使用现有的内部构建版本进行外部测试。点击 Add Builds > 在 Select a Build to Test 下,选择你想使用的构建版本 > 点击 Next

3

填写测试信息

在 Apple 接受构建版本进行审核之前,外部测试需要提供测试版 App 描述和反馈电子邮件地址。如果你的 App 需要登录,请启用 Sign-in Information,并提供供 Apple 使用的测试帐户。点击 Next

4

提交 Beta App 审核

What to Test 下提供所需信息,然后点击 Submit for Review。Apple 会审核构建版本,并在批准后通过电子邮件通知你。

5

邀请测试人员

审核通过后,你可以通过电子邮件邀请测试人员、导入 CSV,或启用公开链接。公开链接可以对所有人开放,也可以按设备和操作系统版本进行筛选。

常见问题

我需要 Mac 才能使用 TestFlight 分发应用吗?

不需要。eas buildeas submit 都可以在 macOS、Linux 和 Windows 上运行。构建会在 EAS Build 基础设施上运行,EAS Submit 会代表你将 .ipa 上传到 App Store Connect。

从内部测试转为外部测试时,我需要重新构建吗?

不需要。将 App Store Connect 中已有的构建添加到外部群组,并提交进行 Beta App Review。只有在应用本身发生变化时,才需要新的构建。

为什么团队成员无法将构建添加到外部群组?

这是因为他们的 App Store Connect 角色不允许执行此操作。DeveloperMarketing 角色可以管理内部测试,但无法管理外部测试;外部测试需要 Account HolderAdminApp Manager 角色。

凭证也有相同的限制。只有 Account HolderAdmin 才能创建 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 正在等待你回答出口合规问题,在你回答之前无法将该构建分发给测试人员。你可以在应用配置中回答一次,而不必每次上传时都回答:

app.json
{ "ios": { "config": { "usesNonExemptEncryption": false } } }

只有当你的应用没有使用超出 Apple 豁免范围的加密技术时,才能将 usesNonExemptEncryption 设置为 false,例如通过操作系统使用 HTTPS。此声明也涵盖应用所链接的第三方库,并且适用于 TestFlight 构建,而不仅仅是 App Store 发布版本。

我可以从命令行将构建添加到 TestFlight 群组吗?

可以,但仅限内部群组。使用现有内部群组的名称传入 --groups,并使用 --what-to-test 设置测试说明:

Terminal
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:

.eas/workflows/testflight.yml
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 测试信息。