你给测试员发了 TestFlight 公开链接或 8 位兑换码。他在浏览器里点链接,TestFlight 打开后看到下面之一(截至 2026 年 6 月精确措辞是):
This code is invalid.Couldn't redeem TestFlight invitation code. This invitation has been revoked or is invalid. Request a new invitation from the developer.This beta isn't accepting any new testers right now.
你在自己浏览器里确认链接是好的——打开正常,落到 “Start Testing” 屏——所以链接本身没坏。问题出在测试员的环境、Apple ID、或你的 group 状态某处不匹配。
最快修法(覆盖大多数情况):确认 group 挂着一个未过期的 build(90 天内上传的)、且处于 Ready to Submit / 已通过审核状态,然后让测试员直接打开 TestFlight App、用你发邀请时那个 Apple ID 登录、在登录状态下再点一次链接。两个最常见的真实原因是:(1) 测试员登录的 Apple ID 和你邀请的不是同一个;(2) group 挂的 build 在第 90 天过期了。
TestFlight 兑换有几个严格前提:build 必须未过期且已通过、测试员 Apple ID 国家必须匹配 App 可用地区、邮件邀请的 code 会锁定到兑换时登录的那个 Apple ID、group 测试员上限不能到、TestFlight App 不能太旧。按下面清单走一遍通常 5 分钟内能找到原因。
先用错误措辞对号入座
测试员看到的精确措辞是最好的诊断线索。先要一张截图,再从对应那一行开始。
| 测试员看到的 | 最可能原因 | 跳到 |
|---|---|---|
This code is invalid. | 登错 Apple ID、code 已兑换过、或链接被撤销 | 原因 2、6、8 |
Couldn't redeem... This invitation has been revoked or is invalid. | 邮件邀请的 code 锁到了别的 Apple ID,或你撤销了链接 | 原因 2、6 |
This beta isn't accepting any new testers right now. | 测试员上限到了,或挂的 build 过期(第 90 天) | 原因 3、5 |
App not available in your region / 什么都装不上 | Apple ID 国家不在你的可用列表里 | 原因 1 |
| 链接能开,但只在 Mac/iPad 上装不了 | build 不支持该设备 | 原因 7 |
常见原因
按命中率排序。
1. Apple ID 国家和 App 可用地区不匹配
App 只在 US 和 CA 可用。测试员 Apple ID 在 JP。点兑换链接时 TestFlight 核地区不兼容,拒。
如何判断:让测试员看 设置 → Apple ID → 顶部 → 地区。和你 App Store Connect → Pricing and Availability 列表对照。他的地区不在你列表里就被卡。
2. 测试员登录的 Apple ID 和你邀请的不是同一个
据 Apple 开发者论坛(截至 2026 年 6 月),这是 This code is invalid 和 ...revoked or is invalid 措辞最常见的原因。邮件邀请是按设备当前登录的那个 Apple ID 来兑换的,不是你填的那个邮箱地址。你邀请 tester@work.com,但他在登录 tester@personal.com 的手机上点链接,code 就兑换并锁定到了个人 ID,之后再用工作 ID 试就失败。
相关情况:测试员之前用同一个 ID 接受过邀请(更早的 build 或姐妹 group),TestFlight 已把他算作测试员,于是拒绝新兑换。
如何判断:让测试员打开 设置 → 点顶部自己的名字,读出显示的 Apple ID 邮箱,必须和你邀请的地址完全一致。也可以在 App Store Connect → TestFlight → 你的 group 里搜他的邮箱;如果同一个 build 的任何 group 里已经有他,就是冲突。
3. 外部测试员名额满(10,000 上限)
一个 App 最多 10,000 个外部测试员(Apple 硬上限,截至 2026 年 6 月未变)。公开链接还可以带一个你自己设的 1 到 10,000 之间的可选上限。任一上限到了,新兑换都会失败并显示 This beta isn't accepting any new testers right now——尽管链接对你还是能打开。
如何判断:App Store Connect → TestFlight → External Testing → 你的 group。group 页顶部的 insight 卡片会标出公开链接是否已满;也可以把测试员数和公开链接旁显示的上限对照。
4. 挂的 build 在第 90 天过期了
TestFlight build 上传后只能安装 90 天,Apple 不延期也不重新激活(2026 年 6 月确认)。一旦 group 指向的 build 过了第 90 天,新测试员点链接会看到 This beta isn't accepting any new testers right now,已有测试员看到 “expired”。这是 “not accepting” 措辞的两个原因之一(另一个是上限满)。
如何判断:App Store Connect → TestFlight → 你的 group → 看挂的 build 上传日期和状态。超过 90 天就上传新 build。注意:新版本的第一个 build 仍要过 Beta App Review 外部测试员才能装,所以要在第 90 天前留足余量。
5. 测试员的 TestFlight App 太旧,或没接受条款
测试员很久没更新 TestFlight,老客户端可能兑换不了新 code/link——Apple 偶尔做后端变更要求新版客户端。另外,全新 Apple ID 或从未用过 TestFlight 的账号,首次启动必须接受 TestFlight 服务条款才能兑换;跳过就会第一次兑换静默失败。
如何判断:让测试员去 App Store 搜 “TestFlight” 看有没有 “Update” 按钮。然后让他直接打开 TestFlight App(先别点链接),登录,接受所有提示,再点兑换链接。
6. 公开链接被撤销,或 build 被移除
你可能不知不觉关了或删了公开链接,或它指向的 build 从 group 里被移走了。在你重建或重启链接前,code 都返回 revoked or is invalid。
如何判断:App Store Connect → TestFlight → External Testing → 你的 group → Testers 标签页。如果没有活跃的公开链接,点 “Create Public Link”(或点 “Manage” 重启已有的)。确认 group 挂着一个已通过、未过期的 build。
7. 来自保留域名的 Managed Apple Account
自 2025 年 10 月的一次 TestFlight 变更起,来自 Apple Business Manager 或 Apple School Manager 的多数 Managed Apple Account 已经能测 build 了——但有两类仍然不行:地址在保留域名下的账号,以及任何被分配 **Student(学生)**角色的账号。这两类兑换就是过不去,部分公司或学校账号会踩到。
如何判断:问问账号是不是公司或学校发的。如果这个 Apple ID 在保留(组织自有)域名下,或带 Student 角色,让他改用支持地区的个人 Apple ID 兑换。另外,该 managed 账号必须能收邮件,邀请才生效。
8. 测试员在受限 macOS / iPadOS 上
部分 Mac 配置(Apple Silicon、关 iOS 应用)和部分 iPad 设置兑换不了 iPhone-only TestFlight build。链接 “能用” 但 App 装不到他设备上。
如何判断:让测试员先在 iPhone 上试;iPhone 行而 Mac/iPad 不行就找到了边界。调 build 支持设备或引导他用 iPhone。
需要收集的信息
- 测试员看到的精确错误信息(截图最好)。
- 测试员 Apple ID 的国家 + 用的设备。
- 用的哪种兑换机制:公开链接、邮件邀请、还是 8 位 code。
- Group 名 + 当前测试员数 + 上限。
- Build 状态(Ready to Submit、Waiting for Review 等)+ 上传日期 + 挂的是哪个 build。
最短修复路径
Step 1:在第二个账号上验证链接 / code 能用
用另一个 Apple ID(或借同事的)在无痕浏览器试链接。能行就链接没事,问题在原测试员的设置。
第二个账号也挂就问题在你这边(group 状态、build 挂载、链接停用)。
Step 2:核测试员 Apple ID 地区
问:“你 Apple ID 国家是什么?(设置 → 点名字 → 地区。)” 和 App Store Connect → Pricing and Availability 对照。
地区不匹配:
- 扩 App 的可用地区把他地区包进来(App Store Connect → Pricing and Availability)。
- 或让测试员用支持地区的另一个 Apple ID(注意:换 Apple ID 国家有限制)。
Step 3:确认挂的 build 是当前的、且已通过
App Store Connect → TestFlight → 你的 group → 看 build 的上传日期和状态。
- build 超过 90 天就上传新的(新版本的第一个 build 要过 Beta App Review 外部测试员才能装)。
- 确认 build 已通过 / Ready to Submit,并且确实挂在这个 group 上,而不是只躺在 build 列表里。
Step 4:核 group 测试员上限
App Store Connect → TestFlight → External Testing → 你的 group → 看测试员数 vs 公开链接上限(顶部 insight 卡片会标出链接已满)。
到上限:
- 点公开链接旁的 “Manage” 把上限升上去(最高 10,000)。
- 或移走不活跃的(从没装过的):点每个 → Remove。
Step 5:修正 Apple ID,再退出之前的 group
- 让测试员确认
设置 → 点自己的名字里显示的正是你邀请的那个 Apple ID,且它的国家在你的可用列表里。 - 如果同一个 Apple ID 已经在之前的 group 里:在测试员的 TestFlight App 里打开 App 列表项 → 点 ”…” → “Stop Testing”,再在登录状态的 TestFlight App 里点兑换链接。
Step 6:让测试员更新或重装 TestFlight
让他:
- App Store 搜 “TestFlight” → 有 Update 就装。
- 没 Update 就删了重装。
- 用匹配的 Apple ID 登入。
- 第一次启动接受所有服务条款提示。
- 再点兑换链接。
Step 7:换兑换机制
邮件邀请和公开链接都能用,但有时一个失败另一个成:
- 公开链接挂 → 试邮件邀请:App Store Connect → TestFlight → External Testing → 你的 group → Testers 标签页 → ”+” → “Email” → 按邮箱加测试员 → 测试员收到自己的链接。提醒他在登录那个确切 Apple ID 的设备上兑换。
- 邮件挂 → 试公开链接:Testers 标签页 → “Create Public Link” → “Open to Anyone”(可选设一个 Tester Limit)→ 直接分享 URL。
怎么确认已经修好
- 测试员走到 “Start Testing” 屏并成功点 Install。
- App Store Connect → TestFlight → 你的 group 显示测试员是 “Available to Test” 或 “Installed”。
- build 在测试员设备上安装并启动。
- 第二个兑换测试(用你的临时 Apple ID)也能成。
如果还是没修好
- 让测试员发精确错误截图;措辞(
This code is invalidvs...revoked or is invalidvsisn't accepting any new testers)指向不同原因。 - 在认定是自己配置问题前,先查 Apple 开发者系统状态页 看有没有 TestFlight 事故。
- 用完全新的邮箱和 Apple ID(如新的免费 iCloud 或 Gmail 地址)端到端测一次,看链接是否真的功能完整。
- 如果某个已知 Apple ID 被永久锁到了错误账号上(论坛记录的邮件邀请陷阱),把这个测试员从 group 删掉,等变更生效,再用公开链接重新邀请,而不是重发同一个邮件 code。
- 上面都查过还不行,就通过 Contact Us 表单联系 App Review——少见但真有后端 bug。
常见问答
为什么链接我自己能用,测试员却不行?
链接是活的只能证明你这边的 group 和 build 没问题。兑换是被测试员的环境拒掉的:他的 Apple ID 国家、他实际登录的 Apple ID、过期的 build、满了的上限、或一个 managed(工作 / 学校)账号。把他的精确错误措辞和上面的表对号入座。
测试员 Apple ID 的国家真的必须匹配我 App 的地区吗?
是的。兑换时 TestFlight 会拿 Apple ID 注册的国家和你 App Store Connect → Pricing and Availability 列表核对。他的国家不在列表里,就扩可用地区,或让他用注册在支持地区的 Apple ID。换 Apple ID 国家本身有限制(不能有未花完的余额等),所以扩可用地区通常更省事。
为什么邮件邀请兑换到了错误的 Apple ID?
邮件邀请是按点链接时设备上登录的那个 Apple ID 来兑换的,不是你填的地址。测试员登的是个人 ID 而你邀的是工作 ID,code 就锁到了个人 ID 上。重新邀请时 Apple 会重发同一个 code 而不是新生成一个,所以干净的修法是删掉这个测试员、改用公开链接——任何登录的支持地区账号都能兑换。
一个 TestFlight build 能用多久?
上传后 90 天,不延期(截至 2026 年 6 月)。要在第 90 天前留足余量上传新 build,让 group 始终有一个活的 build;否则新测试员会撞上 This beta isn't accepting any new testers right now,已有测试员看到 “expired”。
公司或学校的 Apple 账号能测我的 beta 吗?
多数能。自 2025 年 10 月的一次 TestFlight 变更起,来自 Apple Business Manager 或 Apple School Manager 的多数 Managed Apple Account 现在可以被邀请。仍被挡在外面的例外是:地址在保留(组织自有)域名下的账号,以及带 Student 角色的账号——这两类完全兑换不了,让他改用支持地区的个人 Apple ID。
预防建议
- 邀请前问测试员 Apple ID 用哪国,以及设备上实际登录的是哪个 Apple ID 地址。
- 优先公开 TestFlight 链接而不是邮件邀请:既绕开邮箱投递问题,又绕开 “兑换到错误 Apple ID” 的陷阱。
- 维护
TESTERS.md映射邮箱 → Apple ID 地区 → 偏好设备,邀请时就抓不匹配。 - 做公开链接分发时,一开始就把公开链接上限设得宽松些(最高 10,000);永远不会撞墙。
- 任何挂着的 build 到第 90 天前就上传新 build,换 build 时通知测试员,别让谁撞上过期的。
相关阅读
- TestFlight 外部测试员收不到邀请
- TestFlight build 在设备上看不到
- Provisioning Profile 过期导致 build 被拒
- TestFlight build 过期
标签: #排查