本文内容
App Store 审核退回你的应用的八个原因
简短的回答:App Store 和 Google Play 上的大多数应用被拒,并不是代码缺陷造成的。真正的原因是由企业主而不是开发者掌控的行政事项——一个审核人员能够登录的演示账号、一份完整的隐私政策、一份与实际情况相符的数据声明、一个以公司名义注册的开发者账号,以及一个早已过期的技术截止日期。这些事项都可以在上线前两周准备好,不需要写一行代码。
对进度的影响比看上去更大。被拒并不意味着应用不好;它意味着每次修改后应用都要重新排到队尾,于是一场与某个季节或活动绑定的上线推广,就会变成一次没有尽头的延期。因此,发布材料应当被视为项目的一部分,而不是留到最后一天才处理的文书工作。
1 — 没有可供审核人员打开应用的演示账号
这是以登录界面开头的应用中最常见的原因。审核人员不是你的客户,在你的系统中也没有注册手机号,所以如果没有现成的登录凭据,他们就会停在第一个界面。Apple 的应用完整性规则(App Completeness,2.1)写得很明确:提交最终版本;如果应用有登录功能,请附上演示账号信息;并且保持后端服务处于开启状态。如果法律或安全方面的义务使你无法提供真实账号,你可以在事先获得 Apple 批准的前提下,内置一个能够展示应用全部功能的演示模式。
实际操作上:准备一个永久账号,它不会过期,也不会在数据清理时被删除;并确保预发布(staging)服务器在整个审核期间都在运行,而不只是在你的办公时间内。
2 — 商店认为你的应用只是重新包装的网站
最低功能规则(Minimum Functionality,4.2)规定,应用必须包含能使其超越重新包装网站的功能、内容和界面;主要由营销材料、网页剪辑、内容聚合或一堆链接构成的应用不会被接受。许多公司之所以要做应用,是因为竞争对手有一个,结果产品上线时只是套了一层壳的网站副本。
出路有两条:要么赋予应用浏览器无法提供的真正价值——离线使用、根据订单状态推送通知、条形码扫描、在设备上存储数据、集成支付和地图;要么发布一个渐进式网页应用,而不是走应用商店。我们在渐进式网页应用还是原生应用一文中讨论过这一取舍。
3 — 隐私政策不完整,或在应用内找不到
Apple 的数据收集规则(Data Collection,5.1.1)要求在 App Store Connect 元数据中以及应用内部易于找到的位置提供隐私政策链接。隐私政策必须说明收集哪些数据、如何收集以及每一种用途;确认与你共享数据的任何第三方——分析工具、广告网络、第三方 SDK——都提供同等的保护;并说明数据保留和删除政策,以及用户如何撤回同意。
这不是一个可以从别的网站复制过来的页面。它描述的是你的系统实际在做什么,而且必须符合你在沙特《个人数据保护法》(PDPL)下的义务,正如我们在PDPL 实用指南中所解释的。
4 — 应用内无法删除账号
规则 5.1.1 (v) 说得很清楚:如果你的应用支持创建账号,你也必须提供在应用内删除账号的功能。它还补充了一条许多团队忽略的规定:如果你的应用不包含重要的基于账号的功能,就让用户无需登录即可使用;除非与核心功能直接相关或法律要求,否则不要索取个人信息。
这里的删除账号不只是界面上的一个按钮,而是一整条后端流程。那些依法不能删除的客户订单、发票和会计记录怎么办?通常的做法是在开发开始之前,而不是之后,就把身份数据与财务记录分开。
5 — Google Play 的数据安全声明与应用的实际行为不符
Google 要求每位开发者声明应用收集并传出设备的数据,包括第三方库和 SDK 收集的数据;声明收集是必需还是可选、用途是什么、数据在传输过程中是否加密,以及是否存在删除请求机制。政策规定,只有开发者本人对声明的准确性负责,违规会导致更新被阻止或应用从 Google Play 下架。
常见的错误很简单:某位开发者为了方便自己的工作,加入了一个分析或崩溃报告工具,却没有人把它写进声明。提交前问你的团队一个问题:这个应用中第三方包的完整清单是什么?每个包都会发送什么?
6 — 因应用的目标 Android 版本过旧而被拒绝更新
自 2026 年 8 月 31 日起,Google Play 要求新应用和应用更新以 Android 16(API 级别 36)或更高版本为目标,但有例外:Wear OS 和 Android Automotive 为级别 35,Android TV 和 Android XR 为级别 34。申请了延期的开发者可以延至 2026 年 11 月 1 日。
对企业主而言的运营后果是:你已发布的应用仍留在商店里,但在按要求的级别重新构建之前,你根本无法发布任何更新——即使是紧急的安全修复或价格调整也不行。任何一年没有更新过的应用,都值得在你需要紧急发布之前,先检查这一点。
7 — 新账号在发布前需要 12 名测试人员和 14 天
2023 年 11 月 13 日之后在 Google Play 创建的个人开发者账号,无法直接公开发布。在申请正式版访问权限之前,需要进行一次封闭测试,至少 12 名测试人员连续参与至少 14 天。这意味着进度表上多出两周,还需要 12 个拥有真实 Google 账号的真人。
另一方面,以组织身份加入 Apple Developer Program,需要一个 D-U-N-S 编码,以及一个能够签订合同的法人实体,并使用该组织的法定名称——不能是商号,也不能是分支机构。获取编码并通过验证需要几天时间。请在项目第一周就启动这件事,而不是在上线那一周。
8 — 商店元数据、截图,以及每个分店一个应用
三条小规则就能让整个版本发布失败:截图必须展示应用的实际使用情况,而不是标题图、登录页或启动画面(2.3.3);应用名称限制在 30 个字符以内,元数据中不得堆砌商标词、热门应用名称或价格(2.3.7);以及你不能为同一个应用创建多个 bundle ID(4.3a)——而这恰恰是公司要求每个分店或每个城市单独一个应用时会发生的情况。正确的模式是只做一个应用,由用户在其中选择分店。
这道关卡如何融入项目计划
- 以你公司的名义注册开发者账号,而不是以开发者或代理公司的名义。它和域名一样是公司资产,正如我们在谁拥有你的软件权利一文中所述。
- 在第一周就开通账号:Apple 每年收费 99 美元,Google Play 一次性收费 25 美元;耗时的是验证,而不是付款。
- 在合同中加入一项条款,写明由谁提交构建版本、由谁回复审核意见,以及报价涵盖多少轮审核。
- 把发布材料当作一项独立的交付成果:隐私政策、数据声明、截图、描述、演示账号,以及第三方包清单。
代码在上线前一周完成,发布材料却需要两周。把这个顺序弄错,正是大多数上线延期的根源。
参考来源
常见问题
两个商店的审批通常需要多长时间?
审核本身通常每次提交需要一到三天,但实际时长取决于你被拒绝了多少次。提交前请为发布材料预留两周,为至少一轮“被拒—修改”预留一周缓冲;如果 Google Play 账号是新账号、仍需完成封闭测试,再额外预留两周。
我们的应用已经发布两年没有更新了,这样没问题吗?
应用仍然可以下载,但除非以 Android 16(API 级别 36)为目标,否则 Google Play 不会接受任何新的更新,这项要求自 2026 年 8 月 31 日起生效。问题会在某一天突然暴露:你需要一个安全修复或一次价格调整,却发现一个小小的更新也要求重新构建。现在就检查,不要等到紧急情况发生。
我们需要为每个分店单独做一个应用吗?
不需要,而且 Apple 的反重复规则明确禁止这样做:你不能为同一个应用创建多个 bundle ID,为每个城市或地点各做一个版本。正确的做法是只做一个应用,由用户在其中选择分店;这样开发和维护成本更低,在商店搜索中的曝光也更好。
开发者账号登记在开发应用的代理公司名下,有什么风险?
风险在于,应用及其评论、评分和下载历史都是绑定在一个不属于你的账号上的资产,日后要迁移,需要对方同意并走一套转移流程。请从一开始就以你的法人实体注册账号,并给代理公司授予有范围限制、可在合同结束时撤销的访问权限。
在 Google 上关注 Origami
把 Origami 设为首选来源,我们的文章就会优先出现在您的 Google 搜索和热门新闻中。








