# App Store 审核 Guideline 2.1 被拒：原因与解决方法

> 2.1 被拒多因崩溃、死链接、缺演示账号或内购找不到。修复后提交新构建并回复审核员。

原始页面：[App Store 审核 Guideline 2.1 被拒：原因与解决方法](https://devoria.fr/zh-hans/blog/app-store-guideline-2-1-rejection-fix)
作者：[Mehdi Azizi](https://devoria.fr/zh-hans/mehdi-azizi)
发布：2026-09-23
内容最后修订：2026-10-09


Guideline 2.1 是让最多提交栽跟头的一条规则。Apple 自己在 [App Review 页面](https://developer.apple.com/distribute/app-review/)上写明：平均来说，超过 40% 的未解决问题都与 2.1 有关，这条规则涵盖崩溃、占位内容和信息不完整。

这篇文章只讲这一条规则：它涵盖什么、它的两种变体、审核员怎么测试你的 app、该怎么回复他，外加我自己的 app 吃过的三次拒审。想看所有拒审原因的全貌，请读[Apple 为什么拒绝 app](https://devoria.fr/zh-hans/blog/apple-app-rejection-reasons-real-cases)。

## 什么是 Guideline 2.1 App Completeness？

Guideline 2.1 要求提交给 Apple 的 app 是最终的完整版本：不崩溃、没有死链接、没有占位文字，需要登录的 app 要提供演示账号，内购要可见且能用。如果审核员没法把你的 app 从头走到尾，就是 2.1 拒审。

官方原文在 [App Review Guidelines](https://developer.apple.com/app-store/review/guidelines/#2.1) 第 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 个错误](https://devoria.fr/zh-hans/blog/ios-paywall-beginner-mistakes)。

## 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 的支持页面](https://developer.apple.com/support/ipv6/)将其列为 2016 年 6 月 1 日起所有提交 app 的要求。风险来自写死的 IPv4 地址：Apple 建议在纯 IPv6 网络下测试，并关闭蜂窝数据。

想在提交前复现这些条件，最简单的还是用 TestFlight 在多台设备上测：见[TestFlight：测试你的 iPhone app](https://devoria.fr/zh-hans/blog/testflight-guide-test-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”](https://devoria.fr/zh-hans/blog/app-store-connect-waiting-for-review-statuses)状态，与 Apple 的沟通在你 app 的 App Review 区域进行，大家仍称之为 Resolution Center。官方的[回复 App Review](https://developer.apple.com/help/app-store-connect/manage-submissions-to-app-review/reply-to-app-review-messages/)流程允许每条消息最多 4000 个字符，可附一个附件。

用英文写，简洁明了。审核员想要三条信息：什么卡住了、改了什么、怎么验证。下面是我用的模板（把构建号和修复内容换成你自己的）：

```text
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 审核需要多久](https://devoria.fr/zh-hans/blog/app-store-review-time-how-long)。

如果看完消息原因还是不清楚，完整步骤见[应用被 Apple 拒绝](https://devoria.fr/zh-hans/expertise/app-rejected-by-apple)页面。

## 审核备注和演示账号

App Store Connect 里你这个版本的 App Review Information 区域，是你对抗 2.1 的最佳防线。根据[这些字段的官方说明](https://developer.apple.com/help/app-store-connect/reference/app-review-information/)，它包括：

- **Sign-in required**：演示账号的用户名和密码。这个账号不能过期。如果你的 app 使用第三方登录，要提供该服务的账号信息。
- **Notes**：最多 4000 字节，语言随你。凡是有助于测试的都写上。
- **Contact**：姓名、邮箱和国际格式的电话号码。

我每次都会在备注里写：

1. **每个内购的入口路径**，正如规则 2.1(b) 要求的那样。
2. **不明显的功能**：某个手势、某个权限、与时间相关的内容。
3. **演示账号的状态**：是否已订阅，数据是预填的还是空白的。
4. **已知限制**：对于难以复现的硬件或环境，Apple 要求你随时能提供视频。

还有一条表单之外的规则：**整个审核期间保持服务器开着。** 测试服务器一关，演示账号就失效，结果就是 2.1 拒审。

## 提交前的 2.1 检查清单

这是我每次提交前都会过一遍的清单，来自我吃过的拒审：

- 在支持的最小 iPhone、最大 iPhone 和兼容模式的 iPad 上从零安装 app
- 完整走一遍引导流程，在每个需要操作表现的步骤故意失败
- 每个必经页面都有无条件的出口
- 面向审核的修复没有只通过远程更新发布
- 在飞行模式下启动 app，再在纯 IPv6 网络下启动
- 当天打开填写的每个 URL：隐私政策、使用条款、支持页面
- 没有任何可见的占位文字、空白页面或测试数据
- 演示账号在提交当天测过，没有过期日期，服务器开着
- 每个内购都能从 app 里找到并在 sandbox 里测过，包括恢复购买
- 审核备注写明内购和不明显功能的位置

如果这是你第一次发布，前面的所有步骤见[在 App Store 上发布应用](https://devoria.fr/zh-hans/expertise/publish-an-app-on-the-app-store)。

## 和吃过这些拒审的人一起准备提交材料

[Apple Review Kit](https://devoria.fr/zh-hans/kits/review-apple) 汇集了我的提交前检查清单、给审核员的备注模板，以及在你提交前检查项目的 Claude Code skills。

刚收到 2.1 拒审？这个 kit 也能帮你找到被引用的规则、它的要求，以及修复和回复的示例。如果你想现在就和我一起看看你的材料，[预约和我视频一小时](https://devoria.fr/zh-hans/coaching)。

没人能保证 Apple 会通过你的 app。我能做的，是帮你避开那些我已经用一轮审核换来教训的 2.1 拒审。

还没提交 app？[免费诊断](https://devoria.fr/zh-hans/diagnostic)会把我的防 Apple 拒审清单（包括 2.1 规则）发给你，并告诉你提交前还差什么。如果你还在开发阶段，首页展示了如何从一开始就带着审核意识[开发移动应用](https://devoria.fr/zh-hans)。

## 常见问题

### “Guideline 2.1 - Information Needed”是什么意思？

审核员没能完成审核，在向你提问：账号、说明，或进入某个功能的方法。在 App Store Connect 里精准回复。如果问题暴露出 app 里真的卡住了，就像 Solys 那样，修好它并提交新构建。

### 2.1 拒审后需要新构建吗？

如果是崩溃、bug 或卡住的页面，需要：修复必须在二进制文件里。远程更新不够，因为审核员首次启动时看到的是打包进去的代码。如果只是缺少信息，回复就可能够了。

### 我的 app 需要登录，要给审核员提供什么？

一个不会过期的演示账号，填在 App Review Information 区域里，并在整个审核期间保持服务器开着。内置演示模式只有事先获得 Apple 同意才能代替账号，而且必须展示全部功能。

### 2.1 拒审可能不是 app 本身的问题吗？

可能。商品页里一个失效的 URL、过期的演示账号、关掉的服务器或配置错误的内购都足以导致拒审。有时就像 Clic 那样，真正的原因在线上而不在代码里：把审核员能打开的一切都检查一遍。


## 你的项目

[Apple Review Kit](https://devoria.fr/zh-hans/kits/review-apple)：我在用的 App Store 审核检查清单、我被 Apple 拒绝后的修改、给审核员的备注，以及两个审查你 App 的 Claude Code skills。29 €。

[iOS Kit](https://devoria.fr/zh-hans/kits/ios)：用 Claude Code 做你的 iPhone App：我自己 App 的起步代码、检查其工作的 skills，以及 Apple Review Kit、App Store Screenshots Kit 和 ASO Kit。129,99 €。
