你提交 build,24-48 小时后状态变 Metadata Rejected,标题写 “Guideline 2.1 — Information Needed”。正文一段客气话,归结到三个诉求之一:“please provide demo account credentials”、“please walk us through how to access [feature X]”、“this feature appears to require [region/hardware/permission] we couldn’t test”。这不是 binary 问题,是文档问题。审核员在告诉你:“我走不到某条代码路径,你得在 App Review notes 里把缺的环节补上。”
最快的修复是在 notes 里逐字回应他的具体问题,不动 build 直接重新点 Submit for Review,一小时内就能回到队列。
常见原因
按命中率排序,约 80% 是 #1 或 #2。
1. 强登录 App 没给 demo 账号
开屏就强制登录、没”跳过”按钮,但 App Review notes 要么没填凭证、要么填了过期的、要么只写了 SSO 提供商(Apple / Google),审核员的私人账号根本登不上去。
如何判断:用干净模拟器打开 build。如果第一屏过不去、且 App Store Connect 里 App Review Information 字段空着或过期,就是这个情况。
2. 功能有地域 / 年龄 / 硬件锁
某联赛的体育比分、单一国家的支付、需要 LiDAR 的 AR、需要 Apple Watch 才出数据的 HealthKit 流——审核员的设备或账号过不了那道闸,功能在他眼里就是”坏了”或”找不到”。
如何判断:在拒回里搜 “we were unable to locate” 或 “this feature did not load” 这类词。对照你的 gating 逻辑:这个功能是不是只在 region == "JP"、18+、特定 iPhone 型号下才显示?
3. 注册要 SMS / 邮箱验证审核员过不了
普通用户能注册,但要短信验证码、企业邮箱域名、或邀请码。审核员注册,等不到验证码,放弃。
如何判断:用一个全新的、外区手机号 + 邮箱试一次注册。60 秒内没收到验证码,审核员也没收到。
4. 功能需要真实钱或真实第三方账户
绑定银行卡(Plaid)、加密钱包深链(MetaMask)、非沙箱真钱 IAP、外设硬件(智能锁、体脂秤)。审核员能看到 UI 但跑不通实际流程。
如何判断:看拒回里点名的那一屏。如果走通需要真银行、真钱或真设备,就是这道闸。
5. 功能要特定方向、语言或辅助功能才出来
仅横屏的 iPad 布局、只有开了 VoiceOver 才出现的某个按钮。审核员设备的默认状态把你想展示的东西藏掉了。
如何判断:复查 Info.plist 的 UISupportedInterfaceOrientations 和你的条件渲染逻辑。如果默认竖屏 iPhone 进去是空屏,审核员看到的也是空屏。
6. 初始状态本来就空
审核员注册新账号,首页一句 “You don’t have any X yet — create your first one”。他点了一圈没看到核心功能在跑,就拒了。你本意是让他自己造数据,但没说。
如何判断:冷装 + 注册新账号 + 啥都不做——首页像一个能用的 App 还是一层教学覆盖?如果是后者,得预置数据或在 notes 里写清楚。
动手前先确认
- 弄清问题是在本地、预览还是生产;只在某个环境出现就先查环境变量、缓存和部署产物。
- 把审核员原文一字一句读出来,每个动词(“locate” “complete” “access”)背后都对应他卡在哪一步。
- 改 auth 规则 / gating 逻辑前先备份当前配置。
- 决定要不要重打 build。仅改 notes 重交更快;真要改代码就要做好再等 24 小时审核的准备。
需要收集的信息
- 审核员完整原文 + 引用的子条款(2.1、2.1.0、2.1.1)。
- 一份逐屏复现路径,模拟审核员从冷装开始的旅程。
- 所有可能挡住目标功能的 gating 条件:地域、年龄、硬件、语言、角色。
- 当前 App Review notes 的全文,方便 diff 你的改动。
- 测试账号凭证、样本数据、以及任何 VPN / 地区切换说明。
最短修复路径
Step 1:把审核员的诉求翻译成一句话
把拒回压缩成一句 “I could not [动词] [名词] because [缺什么]“。例如:
- “I could not sign in because no credentials were provided.”
- “I could not see live scores because none were available in the US during my review.”
- “I could not connect a bank because Plaid asked for SSN I don’t have.”
写下来。你后面做的每一步都要消掉这句话的 “because” 部分。
Step 2:在 App Review notes 里把缺的补上
App Store Connect → 你的 App → App Information → App Review Information,挑相应模板填:
Demo 账号块:
DEMO ACCOUNT
Email: apple-review-2026@yourdomain.com
Password: ReviewPass-Spring2026!
No 2FA required. Account is pre-seeded with sample data.
地域锁功能块:
REGION REQUIREMENTS
Live scores feature is available only in US/CA/UK.
To test: Settings > General > Language & Region > Region: United States.
Or use the demo account above (pre-set to US region; ignore location prompt).
注册验证块:
SIGNUP SHORTCUT
Standard signup requires SMS verification.
Use the demo account above to bypass.
If you must test signup: use email apple-test+<random>@yourdomain.com,
verification code is hard-coded to 000000 for any apple-test+* email.
Step 3:必要时加 reviewer-mode 开关
对真心没法在审核环境里跑的功能(真钱、真银行、真硬件),加一个编译时 flag,让 App 在检测到审核账号或特定 bundle ID 变体时切到 mock 集成。在 notes 里说明触发方式:
REVIEWER MODE
Tap the app icon 5 times on the lock screen to enable reviewer mode.
This replaces live bank data with sample transactions for testing.
Step 4:给 demo 账号预置真实样本数据
落地是带内容首页的审核员评 App 的设计和功能;落地是空状态的认为是 App 坏了。每个核心功能至少要有一条代表性数据。
Step 5:重新提交
仅改 notes 就不用重打 build。App Store Connect → App Store 标签 → 点被拒的 build → Submit for Review,通常会回到同一个审核员手里。
要改 reviewer-mode 代码就在 Xcode 里 Archive 新 build,通过 Xcode Organizer 或 Transporter 上传,等 30-60 分钟处理完再提交。
Step 6:在 Resolution Center 回复
重交的同时回一条,引用审核员的原话并指向你刚补进 notes 的那几行:
“Thank you for the feedback. We have added demo credentials and a step-by-step walkthrough for the live scores feature in App Review Information. The credentials are pre-set to US region; please tap ‘Today’s Games’ on launch.”
怎么确认已经修好
- Step 1 写下的复现路径在干净模拟器上,只看 App Review notes 就能跑通。
- 重交后 1-2 小时内状态从 Metadata Rejected 回到 Waiting for Review。
- 改完 metadata 没收到新的 ITMS 警告邮件。
- 审核员若回复,是确认收到新信息,而不是又问一遍同样的问题。
如果还是没修好
- 在 Resolution Center 回复时附一段 30 秒 QuickTime 屏录,演示从冷装到目标功能的完整路径。
- 同一个 gap 被引用第二次时,通过 Contact App Review 表单申请换审核员。
- 准备一个完全隔离的第二个 demo 账号,以防第一个在你测试时被限速。
- 实在不行就在 App Store Connect → Resolution Center 申请 Request a Call,让 App Review 团队打电话过来,你当场演示一遍。
预防建议
- 上线第一天就在 App Review notes 给 demo 账号——就算今天没登录墙,明天可能加。
- 在仓库里维护
REVIEW.md记录地区 / 硬件 / 验证要求,每次发版从这个文件抄进 App Review notes。 - 用脚本在每次发版后给 demo 账号预置样本数据。
- 给所有”在审核环境跑不起来”的流程加 reviewer-mode feature flag。
- 让团队里的一个非开发同事仅靠 App Review notes 冷装一次——5 分钟内进不到核心功能就重写 notes。