App Store 拒审:提审前就能干掉的 9 类问题

2026 年真正卡住独立 App 的 App Store 拒审原因:精确规则号、审核员会点什么,以及每一类的提审前自查清单。

App Store 提交里大约四分之一会被拒,而独立开发者第一次提交时,被拒的原因翻来覆去就那十几个规则号。好消息是:审核员在你的 build 里大概只待五分钟,而几乎所有会让你被拒的问题,在你点 Submit 之前你自己就能看见。这篇就是按”审核员会引用哪条规则”组织的提审前自查清单。

一句话总结

  • 截至 2026 年 6 月,Apple 大约 90% 的提交在 48 小时内审完(平均约 1.5 天),所以”被拒—改—重提”一个来回通常是 2 到 3 天,不是几周。但避免第一次被拒才是关键。
  • 独立 App 反复踩的就那几条:2.1(占位 / 半成品 build)、2.3.x(截图和描述跟 App 对不上)、3.1.1(数字商品绕过 IAP)、4.2(薄 WebView 套壳)、5.1.1(App Privacy 表格没填全),以及测试账号缺失或失效
  • 这些大多你自己就能查。提审当天,在一台刚重装过 build 的设备上,把下面 9 项走一遍。
规则管什么独立 App 最常见的触发点
2.1App 完整性占位文案、点了没反应的按钮、冷启动崩溃
2.3.3截图真实用 mockup / 设计稿代替真实界面截图
3.1.1内购”升级”按钮跳 Safari 走 Stripe
4.2最低功能单页 WebView,没有原生功能
4.3spam / 重复同一份代码改皮肤提交 N 次
5.1.1数据收集声明App Privacy 表格没填全、没填隐私政策 URL
5.1.5位置Info.plist 用途文案写得太敷衍
测试账号缺失、被禁用,或者没自测过

App 审核其实比看上去可预测

App 审核看着像黑箱,其实不是。Apple 公开了完整的 App Review Guidelines,审核员拒审时会引一条具体规则号,而踩坑的就那几条反复出现。审核团队每周要处理超过 20 万份提交,所以审核员动作很快、很依赖模式匹配——这正是为什么一个干净、自查过的 build 能顺利过,而一个糙的会因为一行就被打回。

下面这些类目覆盖了 2026 年独立开发者首次提交被拒的绝大多数。提交前知道要查哪些规则,就是第一天过审,和在 Resolution Center 里来回三趟之间的区别。

开始之前

  • 你在准备第一次提审,或者被拒过一次、想在重提前把所有问题修干净。
  • 你已经有能跑的 build 和 App Store Connect 的草稿展示页。
  • 你已经读过(或能读)App Review Guidelines——不长。
  • 你还有时间在提交前修问题,而不是提交后。

9 项自查

下面每条都附了:规则号 + 审核员会怎么拒 + 提交前怎么自查 / 修。每条都过一遍,再点 “Submit for Review”。

  1. 规则 2.1(App Completeness)——不能有占位 / 半成品。审核员会把每个按钮、每个 tab 都点一遍。

    提交前自查:

    - [ ] 全文搜索 "TODO" / "Lorem ipsum" / "敬请期待" / "Coming soon" / "暂未开放"——都要清掉或者隐藏入口
    - [ ] 全文搜索 "test@example.com" / "12345" 等明显占位数据
    - [ ] 跑一遍冷启动:删 App -> 重装 -> 走完所有 tab 的所有按钮,无 crash / 无白屏 / 无 "功能开发中"
    - [ ] App Store Connect -> App Description 里宣传的每个功能,在 build 里都能找到入口

    修法:把”敬请期待”的按钮整个隐藏掉(不是 disabled、不是浅灰),等下个版本再上。Apple 把崩溃和走不通的流程算作 2.1 里最大的一类——冷启动崩溃就是立刻拒。

  2. 规则 2.3.3(截图真实)——截图必须来自当前 build。元数据对不上是最常见的拒审类目之一,而且申诉成功的案例里大约有五分之一是元数据相关的,所以第一次就把这块做对很划算。

    - [ ] 用提交的 build 跑一遍,截当前真实界面的图
    - [ ] 禁用 mockup 图(PSD 合成)、设计稿图、竞品截图
    - [ ] 截图里的内容数据(用户名、商品、消息)也要是 App 真实数据,不能是 "Apple Sample Content"
    - [ ] iPhone 6.9" / 6.7" / 6.5" 各套尺寸都用真机或模拟器截,不要拉伸缩放

    工具:用 Fastlane snapshot 自动跑 UI test 出多尺寸截图:

    gem install fastlane
    fastlane snapshot init
    # 写 SnapfileUITests/SnapshotHelper.swift,跑:
    fastlane snapshot
  3. 规则 3.1.1(IAP 强制)——数字商品必须走 Apple IAP,绝对不能跳外部 web 支付。

    会被拒的典型:

    - 解锁 Pro 功能时打开 Safari 走 Stripe checkout       -> 立刻拒
    - App 内 "升级" 按钮跳官网                              -> 立刻拒
    - 任何 "前往网站购买" 的引导                             -> 立刻拒

    不需要 IAP 的合法例外(“reader” 类,规则 3.1.3):电商实物、专车叫餐、医疗预约、符合条件的网课学习平台等。如果你属于例外类,在 App Store Connect 审核备注里明确写清楚类别——写得太笼统也会被拒。

  4. 规则 4.2(最低功能)——纯 WebView 套壳必拒。Apple 原话:如果你的 App “不够有用、不够独特,也不够 ‘app-like’,它就不该出现在 App Store”。单页 WKWebView、没有任何原生 UI,就是教科书级的 4.2 拒。

    提交前自查:

    - [ ] 是否有至少 2-3 个原生界面(不是 WKWebView 套页面)?
    - [ ] 是否用了 >=1 个 iOS 原生能力(推送 / HealthKit / 摄像头 / Core Location / Widgets)?
    - [ ] 是否有"只有装了 App 才能做"的功能?(离线、推送、生物锁等)
    - [ ] 卸了 App 之后用网页能不能完成同样的事?如果完全能 -> 危险

    最便宜的补救:加 Widgets、Lock Screen Live Activities、Share Extension。原生底部 tab 导航 + 推送通知,通常就足够过”app-like”这关。

  5. 规则 4.3(spam / 重复 App)——不要同一壳子提交多版本。Apple 明确建议把高度相似的 App 合并成一个;提交多个近似重复会拖慢审核,还可能连累全部一起被拒。

    会被拒的典型:

    - 同一份代码改皮肤换图标,提交 10 个细分类目的 App       -> 4.3 拒
    - 模板生成的 App,只有 brand 不同                        -> 4.3 拒
    - "白标"批量代提交                                       -> 4.3 + 5.2 双拒

    详见 App Store 4.3(b) 是什么

  6. 规则 5.1.1(数据收集声明)——App Privacy 表格必须完整

    App Store Connect → App Privacy → “Edit”:

    逐项过 Apple 的各个数据类目(Contact Info / Health / Financial Info / Identifiers / Usage Data / ...):
    - [ ] 每类标 "Collected / Not Collected"
    - [ ] Collected 的标 "Linked to User" / "Not Linked"
    - [ ] 标用途(Analytics / App Functionality / Personalization / Advertising / ...)
    - [ ] 第三方 SDK(Firebase Analytics、Crashlytics、Adjust、AppsFlyer、Sentry 等)也算"你收集"——必须申报

    在 App Information 页填上隐私政策 URL——哪怕你”只在本地存数据”,Apple 也要求有一份。审核员还会检查 App 内能不能找到隐私政策链接和账号删除入口。最少要包含哪些项,看 App 隐私政策清单

  7. 规则 5.1.5(位置)——请求位置必须真正用到 + Info.plist 写清楚用途

    Info.plist 必须填的 key(不写 -> 编译期就会崩;写得敷衍 -> 审核拒):

    <key>NSLocationWhenInUseUsageDescription</key>
    <string>用于显示你附近 5 公里内的咖啡馆推荐,仅在你打开搜索时使用</string>
    
    <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
    <string>仅当你开启 "实时通勤提醒" 后才会持续读位置,用于提前 10 分钟通知你出门</string>

    规则:每个权限文案必须含 (a) 具体场景 (b) 具体收益。“用于改善体验” 这类话几乎 100% 会被拒。

  8. 登录测试账号——属于最容易被拒的那一档,永远别漏。只要你的 App 有任何登录页,Apple 就要求在 App Review Information 里给一个能用的测试账号(或一个功能完整的演示模式)。

    App Store Connect → App Review → Sign-In Information:

    Username: review@yourdomain.com
    Password: AppleReview2026!
    备注:
    - 该账号已预填示例数据:3 个项目、5 条消息、订单历史
    - 主要功能入口都不需要付费即可体验
    - 涉及付款的功能可用沙盒账号测试,沙盒账号也已经预登录
    - 若审核遇到任何无法继续的步骤,请联系 dev@yourdomain.com,24h 内回复

    验证方法:提审当天,用一台全新(或全擦的)设备,拿这套一模一样的账号密码,在国内外两种网络环境各登一遍。账号被禁用或者密码打错一个字,就是稳稳一个来回。

  9. 预填示例内容。审核员只会在你的 App 里待大约五分钟,不会替你配数据。空状态会被读成”还没做完”。

    • 笔记类:审核账号登录后已有 5 篇示例笔记
    • 社交类:审核账号已有 3 个 follower + 已加 2 个 group + 5 条历史消息
    • 工具类:示例项目 / 模板已预设
    • 内容类:首页瀑布流已有可见内容(不能空白)

    在审核备注里写清楚:“登录 review@yourdomain.com 后,可以直接看到示例 X / Y / Z”,并附 1 张登录后首屏的截图。Apple 明确说过笼统的审核备注会被拒——要具体写出审核员该做什么、该看到什么。

容易踩的坑

  • 把 App Review Guidelines 当成”被拒了再看”的东西。第一次提审前从头到尾通读一遍。
  • 给的测试账号不能用,或者已经禁用。提审当天,从干净设备、未登录浏览器测试一遍。
  • 把功能藏在审核员绕不过的付费墙后。要么给”审核专用”通道,要么准备被 2.1 拒。
  • 在 IAP 之外自己另搞一套订阅系统。哪怕跑得通,也是迟早被 3.1.1 拒。
  • App 名或描述里用 beta、test、trial、preview——会触发 2.2 条款拒审。
  • 为了类目搜索排名把 App 分错类。Apple 审核员会改类目甚至拒审。

FAQ

  • 被拒了能申诉吗: 可以,通过 Resolution Center 或 App Review Board。申诉最有效的场景是审核员明显误解,而不是你确实违规;实际成功率大约五分之一,且多集中在元数据判定上。先在 Resolution Center 里带着具体证据回复,再升级。
  • 2026 年审核要多久: Apple 称大约 90% 的提交在 48 小时内审完,平均约 1.5 天。所以”被拒 + 干净重提”一般是 2 到 3 天,不是几周。
  • 拒审会影响后续提交吗: 直接不影响,但同一 App 反复同类拒审,可能被打更严的审核标签。修根源,别只修 Apple 当次引的那条症状。
  • 能加急吗: 可以,在 App Store Connect 申请 expedited review,用于真实紧急情况(崩溃的 build、关键 bug 修复)。不保证批准,而且 Apple 会注意到滥用,所以留给真正着火的情况。
  • 审核员前后不一致怎么办: 有时确实不一致——不同人不同解读。如果之前的版本批准过,就在 Resolution Center 回复里引用那次批准。

相关阅读

标签: #独立开发 #App Store #App 审核 #App 上线