你给测试员发了 TestFlight 公开链接或 8 位兑换码。他在浏览器里点链接,TestFlight 打开后看到 “This code is invalid” 或 “This beta is not accepting new testers”。你在自己浏览器里确认链接是好的——打开正常落到 “Start Testing” 屏——所以链接本身没坏。问题在测试员的环境、Apple ID、或你的 group 状态某处不匹配。
TestFlight 邀请兑换有几个严格前提:测试员 Apple ID 国家必须匹配你 App 可用的地区、同一 Apple ID 不能已经在同 build 的 group 里、group 的测试员人数上限不能到、测试员设备上的 TestFlight App 不能过旧。按顺序走一遍通常 5 分钟内能找到原因。
常见原因
按命中率排序。
1. Apple ID 国家和 App 可用地区不匹配
App 只在 US 和 CA 可用。测试员 Apple ID 在 JP。点兑换链接时 TestFlight 核地区不兼容,拒。
如何判断:让测试员看 设置 → Apple ID → 顶部 → 地区。和你 App Store Connect → Pricing and Availability 列表对照。他的地区不在你列表里就被卡。
2. 同 Apple ID 已加入过该 group
测试员之前用同 Apple ID 接受过邀请(可能是更早的 build 或姐妹 group)。TestFlight 认为他已经是测试员,拒新兑换。
如何判断:App Store Connect → TestFlight → 在所有 group 里搜测试员邮箱。任何一个 group 里有同 build,就是冲突。
3. 外部测试员名额满(10,000 上限)
公开链接 group 有可配置上限(默认 100,最大 10,000)。到了上限新兑换失败显示 “This beta is not accepting new testers”——尽管链接本身能打开。
如何判断:TestFlight → External Testing → 带公开链接的 group → 看测试员数 vs 上限。到上限或接近就升上限或移走不活跃的。
4. 测试员设备上的 TestFlight 版本太旧
测试员一年没更新 TestFlight,老版本可能兑换不了新 code/link。Apple 偶尔做后端变更要求新 TestFlight 客户端。
如何判断:让测试员去 App Store 搜 “TestFlight” 看有没有 “Update” 按钮。
5. Apple ID 还没接受 Sandbox 或 TestFlight 条款
全新 Apple ID 或从未用过 TestFlight 的账号必须先接受 TestFlight 服务条款才能兑换。条款没接受时第一次兑换会静默失败。
如何判断:让测试员先直接打开 TestFlight App(不点兑换链接),登录,接受所有提示,再点链接。
6. 公开链接或 code 已撤销 / 过期
你可能不知不觉关了公开链接,或它指向的 build 被撤回。Code 直到你重启链接前都返回无效。
如何判断:App Store Connect → TestFlight → 你的 group → 看 Public Link 是否启用。停了就重启。确认 group 有 Ready-to-Test 的 build 挂着。
7. 测试员在受限 macOS / iPadOS 上
部分 Mac 配置(Apple Silicon、关 iOS 应用)和部分 iPad 设置兑换不了 iPhone-only TestFlight build。链接 “能用” 但 App 装不到他设备上。
如何判断:让测试员先在 iPhone 上试;iPhone 行而 Mac/iPad 不行就找到了边界。调 build 支持设备或引导他用 iPhone。
动手前先确认
- 先在你或同事的 Apple ID 上验证链接能用,确认链接本身没问题。
- 决定是否要把这个测试员从公开链接切到邮件邀请流(一种失败时另一种偶尔能成)。
- 改之前把当前 group / 公开链接配置截图。
- 弄清问题是只一个测试员还是多个——多个就是 group 状态或 build 挂载问题。
需要收集的信息
- 测试员看到的精确错误信息(截图最好)。
- 测试员 Apple ID 的国家 + 用的设备。
- 用的哪种兑换机制:公开链接、邮件邀请、还是 8 位 code。
- Group 名 + 当前测试员数 + 上限。
- Build 状态(Ready to Test、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:核 group 测试员上限
App Store Connect → TestFlight → External Testing → 你的 group → 看 “Testers (X / Y)”。
到上限:
- 升到最大 10,000。
- 或移走不活跃的(从没装过的):点每个 → Remove。
Step 4:让测试员先退出之前的 group
同 Apple ID 在之前的 group 里:
- 测试员 TestFlight App 里打开 App 列表项 → 点 ”…” → “Stop Testing”。
- 再点兑换链接。
Step 5:让测试员更新或重装 TestFlight
让他:
- App Store 搜 “TestFlight” → 有 Update 就装。
- 没 Update 就删了重装。
- 用匹配的 Apple ID 登入。
- 第一次启动接受所有服务条款提示。
- 再点兑换链接。
Step 6:换兑换机制
邮件邀请和公开链接都能用,但有时一个失败另一个成:
- 公开链接挂 → 试邮件邀请:App Store Connect → TestFlight → External Testing → 你的 group → ”+” → 按邮箱加测试员 → 测试员收带独立链接的邮件。
- 邮件挂 → 试公开链接:给 group 启用公开链接,直接分享 URL。
怎么确认已经修好
- 测试员走到 “Start Testing” 屏并成功点 Install。
- App Store Connect → TestFlight → 你的 group 显示测试员是 “Available to Test” 或 “Installed”。
- build 在测试员设备上安装并启动。
- 第二个兑换测试(用你的临时 Apple ID)也能成。
如果还是没修好
- 让测试员发精确错误截图;措辞(“invalid code” vs “not accepting” vs “not available in your region”)指向不同原因。
- 查 Apple System Status 有没有 TestFlight 兑换侧事故。
- 用完全新的邮箱和 Apple ID(如免费 Gmail)端到端测一次,看链接是否真的功能完整。
- 上面都不行就通过 Contact 表单联系 App Review——少见但真有后端 bug。
预防建议
- 邀请前问测试员 Apple ID 用哪国;优先公开 TestFlight 链接而不是邮件邀请,避开邮箱问题。
- 维护
TESTERS.md映射邮箱 → Apple ID 地区 → 偏好设备,邀请时就抓不匹配。 - 一开始就把公开链接上限设成 10,000;永远不会撞墙。
- 从 group 撤回 build 时给已有测试员通知,他们要等下一个 build。
- 公司 / 受限地区测试员:建一个平行 beta 通道用公开链接 + 你预批的 Apple ID 名单。
相关阅读
- TestFlight 外部测试员收不到邀请
- TestFlight build 在设备上看不到
- Provisioning Profile 过期导致 build 被拒
- TestFlight build 过期
标签: #排查