App Store 审核 Guideline 2.1 被拒:原因与解决方法
作者:Mehdi Azizi
更新于 ,9分钟
2.1 被拒多因崩溃、死链接、缺演示账号或内购找不到。修复后提交新构建并回复审核员。
Guideline 2.1 是让最多提交栽跟头的一条规则。Apple 自己在 App Review 页面上写明:平均来说,超过 40% 的未解决问题都与 2.1 有关,这条规则涵盖崩溃、占位内容和信息不完整。
这篇文章只讲这一条规则:它涵盖什么、它的两种变体、审核员怎么测试你的 app、该怎么回复他,外加我自己的 app 吃过的三次拒审。想看所有拒审原因的全貌,请读Apple 为什么拒绝 app。
什么是 Guideline 2.1 App Completeness?
Guideline 2.1 要求提交给 Apple 的 app 是最终的完整版本:不崩溃、没有死链接、没有占位文字,需要登录的 app 要提供演示账号,内购要可见且能用。如果审核员没法把你的 app 从头走到尾,就是 2.1 拒审。
官方原文在 App Review Guidelines 第 2 节“Performance”中,分为两款。
2.1(a) 要求每次提交都是最终版本,元数据齐全,URL 都能打开。占位文字、空网站和一切临时内容必须在提交前删掉。app 必须在真机上测过 bug 和稳定性。如果需要登录,你要提供演示账号,并保持服务器开着。内置的演示模式可以代替账号,但必须事先获得 Apple 同意,而且要展示 app 的全部功能。一句话总结:“We will reject incomplete app bundles and binaries that crash”。
2.1(b) 针对内购:内购必须完整、最新、对审核员可见并且能用。如果 App Store Connect 里配置的某个内购在 app 里找不到,你必须在审核备注里说明原因。
Guideline 2.1 实际涵盖哪些情况
实际中,2.1 拒审通常出于以下原因之一:
- 崩溃。 启动时、拒绝某个权限后、没有网络时。一次就够。
- 死链接。 隐私政策、使用条款、支持页面:你填写的每个 URL 都会被打开。
- 功能无法访问。 按钮点了没反应、必经页面过不去、引导流程没有出口。最阴险的情况:在你自己的手机上看不出来。
- 演示账号缺失或过期。 审核员卡在登录页,或者提供的账号已失效,或者服务器关了。
- 填充内容。 Lorem ipsum、“即将推出”、空白页面、可见的测试数据。
- 找不到内购。 订阅在 App Store Connect 里存在,但审核员找不到售卖它的页面,或者在 sandbox 里购买失败。最常见的付费页错误见iOS 付费墙:新手常犯的 7 个错误。
2.1 Information Needed 和 2.1(a):有什么区别?
Apple 的消息标题并不都一样,而区别会决定你怎么回复。
“Guideline 2.1 - Information Needed” 表示审核员没能完成审核,在向你提问。缺少账号、缺少说明,或者缺少进入某个功能的方法。这还不是发现 bug,而是一个请求。有时在 App Store Connect 里精准回复就够了。但如果问题暴露出 app 里真的卡住了,就需要新构建。
“Guideline 2.1(a) - Performance - App Completeness” 表示审核员发现了问题:崩溃、bug、页面没有响应。消息里一般会写明所用设备,常常附带截图。这时你得修复、重新提交构建,然后再回复。
Apple 怎么测试你的 app
站在审核员的角度想一想。有三点很关键。
他用的设备你可能没有。 拒审消息常常会写明机型。规则 2.4.1 指出 iPhone app 应尽可能在 iPad 上运行,为 iPhone 设计的 app 在 iPad 上以兼容模式显示,窗口是 iPhone 尺寸。我最近几次 2.1 拒审都来自 iPad Air:如果你只在自己的 iPhone 上测,就看不到审核员看到的东西。
他从首次启动开始。 全新的 app,没有缓存,没有会话,没有已下载的更新。
网络必须在纯 IPv6 下正常工作。 规则 2.5.5(与讲后台模式的 guideline 2.5.4 相邻)要求 app 在纯 IPv6 网络上完全可用,Apple 关于 IPv6 的支持页面将其列为 2016 年 6 月 1 日起所有提交 app 的要求。风险来自写死的 IPv4 地址:Apple 建议在纯 IPv6 网络下测试,并关闭蜂窝数据。
想在提交前复现这些条件,最简单的还是用 TestFlight 在多台设备上测:见TestFlight:测试你的 iPhone app。
我吃过的三次拒审及其真正原因
我自己的 app 最近的三次拒审,以及它们真正的原因。
Solys:在 iPad 上赢不了的小游戏演示
Solys 是我做的小游戏闹钟。2026 年 8 月 18 日,一个构建被以“2.1 Information Needed”拒审:Apple 要求提供通过游戏任务的方法。审核员用的是 iPad Air,iPhone app 跑在兼容模式下。
真正的原因在引导流程里的小游戏演示。障碍物高度是用固定的点数写死的。在兼容模式 iPad 上可用的卡片高度下,通道变得比角色还窄:演示根本赢不了。而“继续”按钮只有赢了才会亮起。没有任何出口:审核员看不到 app。
修复:几何尺寸按卡片实测大小等比计算,并在失败后显示一个“跳过演示”链接。
教训:任何靠操作表现才能通过的步骤,都必须有一个无条件的出口。每个必经页面都要在支持的最小屏幕上测,并且也要在兼容模式的 iPad 上测。
Nolera:审核员看不到的修复
2026 年 9 月 17 日,Nolera 在 iPad Air 上审核后被拒。消息同时涉及 2.1(a) 和其他几点。针对所报问题的修复是通过远程更新(OTA)发布的,没有新构建。
问题在于:首次启动时,审核员看到的是构建里打包的代码,而不是之后下载的更新。对他来说,这个修复根本不存在。
教训:面向审核的修复必须放在提交给 Apple 的二进制文件里。
Clic:原因不在 app 里
2026 年 9 月 16 日,Clic 被拒。app 本身是最新的。真正的原因在别处:网上发布的隐私政策没有更新所用的 AI 服务商信息。这次拒审更多属于隐私问题而非 2.1,但道理相同:真正的原因并不总是消息让你以为的那个。
教训:检查线上的内容,而不是你代码仓库里的内容。提交当天把填写的每个 URL 都打开一遍。
在 Resolution Center 里怎么回复
拒审后,你的提交会进入“Unresolved Issues”状态,与 Apple 的沟通在你 app 的 App Review 区域进行,大家仍称之为 Resolution Center。官方的回复 App Review流程允许每条消息最多 4000 个字符,可附一个附件。
用英文写,简洁明了。审核员想要三条信息:什么卡住了、改了什么、怎么验证。下面是我用的模板(把构建号和修复内容换成你自己的):
Hello,
Thank you for your review.
Issue: the onboarding game demo could not be completed on iPad
(iPhone app running in compatibility mode), so the user could
not continue.
Fix in build 1.0.3 (42):
- The game layout now scales to the measured screen size.
- A "Skip demo" link appears after a failed attempt, so the
onboarding can always be completed.
How to verify: launch the app, start the onboarding demo,
lose once, then tap "Skip demo".
A screen recording is attached.
Best regards,
几条原则:
- 回答被问的问题。 遇到“Information Needed”,先给出准确答案,别先讲背景。
- 写明构建号并给出路径,三四步就能到达修复后的页面。
- 附上证据。 一段在与审核员相近设备上录的短视频,可以省掉一来一回。
- 别辩解。 可以向 App Review Board 申诉,但对一次该拒的 2.1 拒审,申诉只会拉长等待。时长细节见App Store 审核需要多久。
如果看完消息原因还是不清楚,完整步骤见应用被 Apple 拒绝页面。
审核备注和演示账号
App Store Connect 里你这个版本的 App Review Information 区域,是你对抗 2.1 的最佳防线。根据这些字段的官方说明,它包括:
- Sign-in required:演示账号的用户名和密码。这个账号不能过期。如果你的 app 使用第三方登录,要提供该服务的账号信息。
- Notes:最多 4000 字节,语言随你。凡是有助于测试的都写上。
- Contact:姓名、邮箱和国际格式的电话号码。
我每次都会在备注里写:
- 每个内购的入口路径,正如规则 2.1(b) 要求的那样。
- 不明显的功能:某个手势、某个权限、与时间相关的内容。
- 演示账号的状态:是否已订阅,数据是预填的还是空白的。
- 已知限制:对于难以复现的硬件或环境,Apple 要求你随时能提供视频。
还有一条表单之外的规则:整个审核期间保持服务器开着。 测试服务器一关,演示账号就失效,结果就是 2.1 拒审。
提交前的 2.1 检查清单
这是我每次提交前都会过一遍的清单,来自我吃过的拒审:
- 在支持的最小 iPhone、最大 iPhone 和兼容模式的 iPad 上从零安装 app
- 完整走一遍引导流程,在每个需要操作表现的步骤故意失败
- 每个必经页面都有无条件的出口
- 面向审核的修复没有只通过远程更新发布
- 在飞行模式下启动 app,再在纯 IPv6 网络下启动
- 当天打开填写的每个 URL:隐私政策、使用条款、支持页面
- 没有任何可见的占位文字、空白页面或测试数据
- 演示账号在提交当天测过,没有过期日期,服务器开着
- 每个内购都能从 app 里找到并在 sandbox 里测过,包括恢复购买
- 审核备注写明内购和不明显功能的位置
如果这是你第一次发布,前面的所有步骤见在 App Store 上发布应用。
和吃过这些拒审的人一起准备提交材料
Apple Review Kit 汇集了我的提交前检查清单、给审核员的备注模板,以及在你提交前检查项目的 Claude Code skills。
刚收到 2.1 拒审?这个 kit 也能帮你找到被引用的规则、它的要求,以及修复和回复的示例。如果你想现在就和我一起看看你的材料,预约和我视频一小时。
没人能保证 Apple 会通过你的 app。我能做的,是帮你避开那些我已经用一轮审核换来教训的 2.1 拒审。
还没提交 app?免费诊断会把我的防 Apple 拒审清单(包括 2.1 规则)发给你,并告诉你提交前还差什么。如果你还在开发阶段,首页展示了如何从一开始就带着审核意识开发移动应用。
常见问题
“Guideline 2.1 - Information Needed”是什么意思?
审核员没能完成审核,在向你提问:账号、说明,或进入某个功能的方法。在 App Store Connect 里精准回复。如果问题暴露出 app 里真的卡住了,就像 Solys 那样,修好它并提交新构建。
2.1 拒审后需要新构建吗?
如果是崩溃、bug 或卡住的页面,需要:修复必须在二进制文件里。远程更新不够,因为审核员首次启动时看到的是打包进去的代码。如果只是缺少信息,回复就可能够了。
我的 app 需要登录,要给审核员提供什么?
一个不会过期的演示账号,填在 App Review Information 区域里,并在整个审核期间保持服务器开着。内置演示模式只有事先获得 Apple 同意才能代替账号,而且必须展示全部功能。
2.1 拒审可能不是 app 本身的问题吗?
可能。商品页里一个失效的 URL、过期的演示账号、关掉的服务器或配置错误的内购都足以导致拒审。有时就像 Clic 那样,真正的原因在线上而不在代码里:把审核员能打开的一切都检查一遍。