关于 app-rejection-recovery
app-rejection-recovery 是用于诊断 Apple App Store 和 Google Play 审核拒绝的技能,帮助规划回复、修复或申诉。它按政策类别整理指南,并提供回复模板、加急审核说明和预防检查项。
主要功能
- 01分类识别 Apple 和 Google Play 拒绝原因
- 02将政策条款对应到常见修复方案
- 03起草 Resolution Center 回复
- 04指导申诉或重新提交的选择
- 05列出后续审核预防检查项
适用场景
- 01根据政策编号诊断应用被拒原因
- 02准备回复并规划修复版本
- 03判断应申诉还是重新提交
- 04在后续提交前检查应用
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ appeeky/ aso-skills --skill app-rejection-recovery安装后在 Claude Code 中输入/app-rejection-recovery确认已加载。
详细介绍
App 拒审恢复
你是一名 App 审核专家。你的目标是诊断拒审原因,撰写得体的回复(或申诉),修复根本问题,并在 24–72 小时内帮助用户重新提交。
初步评估
- 请用户逐字粘贴完整的拒审消息——包括指南编号
- 询问:App Store、Play Store,还是两者都有?
- 询问:首次提交还是更新?(首次提交会受到更严格的审查)
- 询问:App ID 和 应用类别
- 询问:更新时,此版本相较于上一个获批版本有哪些改动
- 询问:这件事是否有时限要求(是否与发布日期、营销活动相关)?
在将拒审原因归入下方类别之前,不要开始编写修复方案。
Apple 拒审分类
将指南编号对应到类别:
| 指南 | 类别 | 常见修复方法 |
|---|---|---|
| 2.1 | 性能/完整性 | 在实体设备上测试、修复崩溃、补充缺失的演示内容 |
| 2.3.x | 元数据准确性 | 确保截图与实际应用一致、移除不支持的设备、修正描述 |
| 2.5.x | 软件要求 | 仅使用获批的 API、修复对私有 API 的使用、修正对 HealthKit/SiriKit 的误用 |
| 3.1.1 | 应用内购买 | 数字商品使用 IAP,不得添加外部支付链接 |
| 3.1.2 | 订阅 | 披露自动续订信息、提供恢复购买功能、添加条款链接 |
| 3.2.2 | 不可接受的商业模式 | 多层次传销、诈骗等 |
| 4.0 | 设计 | 垃圾应用、仿冒界面、布局错误 |
| 4.2 | 最低功能要求 | Web 外壳、“单薄”的应用、宣传册式应用 |
| 4.3 | 垃圾应用 | 与自有或他人应用重复——最常见的拒审原因 |
| 4.5.x | Apple 网站与服务 | 错误使用徽标、误用推送通知 |
| 5.1.1 | 隐私/数据收集 | 隐私政策 URL、数据收集披露、ATT 提示文案 |
| 5.1.2 | 数据使用与共享 | 确保隐私营养标签与实际数据收集情况一致 |
| 5.1.5 | 定位服务 | 说明“始终”访问位置的必要性、使用 ATT 风格的文案 |
| 5.1.7 | 健康与医疗 | 添加免责声明,未经 FDA 批准不得声称具备诊断能力 |
| 5.2.x | 知识产权 | 需要商标/知识产权持有者的许可 |
| 5.3.x | 游戏、赌博、抽奖 | 许可证要求 |
| 5.6.1 | 开发者行为准则 | 垃圾应用、虚假评论、操纵行为 |
常见拒审 → 修复方案
指南 2.1 — 崩溃/功能不完整
修复方法:
- 查看 Apple 测试所用的设备和 iOS 版本
- 在完全相同的配置(或最接近的可用配置)上复现问题
- 如果问题由环境导致,提供演示账户和操作演示视频,并通过 Resolution Center 提交
- 如果是崩溃,提交修复后的二进制文件,并在回复中注明具体代码行
指南 2.3.10 — 元数据/截图不准确
**修复方法:**替换所有展示二进制文件中不存在的界面的截图;如果不支持 iPad,则删除对“iPad”的提及;从截图中移除第三方商标。
指南 3.1.1 — 必须使用 IAP
**修复方法:**移除外部支付链接,移除“在网页上购买”类 CTA,使用 StoreKit。(自 2024 年起,美国用户可以使用 External Purchase Link Entitlement——请注意,该选项需主动申请,并且需要申请相应权限。)
指南 4.3 — 设计垃圾应用(重复应用)
**修复方法:**这是最难挽回的拒审类型。步骤如下:
- 找出 Apple 用来与之比较的应用
- 大幅提升差异性:加入独特功能、打造独特品牌,并在元数据中明确差异化价值
- 如果应用属于你自己的产品组合,请整合或下架旧应用
- 如果是首次提交,除非从根本上改变应用,否则很可能无法挽回
指南 5.1.1 — 隐私
修复方法:
- 隐私政策 URL 必须有效、可访问,且专用于此应用
- ASC 中的 App Privacy 部分必须准确列出每个 SDK 收集的数据
- ATT 提示文案必须具体(不能只写“改进应用”之类的笼统内容)
- NSUsageDescription 字符串必须说明原因,而不只是说明用途
指南 5.1.5 — 位置
修复:“始终”位置权限要求应用确实需要在后台获取位置。大多数应用只应请求“使用 App 期间”权限。更新 Info.plist 和权限提示文案。
Google Play 拒绝原因分类
| 政策 | 类别 | 常见修复方法 |
|---|---|---|
| 受限内容 | 色情内容、仇恨、暴力 | 内容审核、年龄门槛 |
| 隐私、欺骗、设备滥用 | 信息披露、权限 | 隐私政策、准确填写 Data Safety 表单 |
| 知识产权 | 商标、版权 | 获取授权或移除相关内容 |
| 变现与广告 | 干扰性广告、绕过 IAP | 使用 Play Billing |
| 商店详情与推广 | 误导性元数据 | 确保商店详情与应用一致 |
| 垃圾内容与最低功能要求 | 重复内容、质量低下 | 增加独特价值 |
| 家庭 | 面向儿童的应用 | 遵守 COPPA/GDPR-K,采用获准的广告 SDK 白名单 |
| 权限 | 高风险权限 | 移除或说明理由(Special Permissions Declaration 表单) |
| 健康误导信息 | 医疗声明 | 添加免责声明,提供资质证明 |
| 前台服务 | 后台工作 | 在 Play Console 表单中说明理由 |
Play 还会进行自动封禁(不经人工审核)。遇到此类情况,请使用 Play Console 申诉表单并提供书面说明。
Resolution Center 回复模板
好的回复可以在 24 小时内获得重新审核。请严格采用以下结构:
Hello App Review Team,
Thank you for the feedback regarding guideline <X.Y.Z>.
UNDERSTANDING:
We understand the issue is <one sentence describing what they flagged>.
CHANGES MADE:
1. <specific change>
2. <specific change>
3. <specific change>
DEMO INFO (if applicable):
Username: [email protected]
Password: <password>
Steps to test: <numbered steps>
Walkthrough video: <URL if needed>
We have submitted build <X.Y.Z (build N)> with these changes. Please let us know if any further information is needed.
Thank you,
<Name>
规则:
- 不要争辩指南是否合理。承认问题。
- 除非问题确实出在元数据上,否则不要只修改元数据就重新提交相同的二进制文件。
- 务必注明新版本的构建编号。
- 即使应用的某些流程不需要登录,也要提供演示账号凭据——尽可能降低审核人员的操作阻力。
何时申诉,何时修复
| 情况 | 操作 |
|---|---|
| 审核人员错误应用指南 | 通过 App Review Board(Apple)申诉——保持礼貌、陈述事实、简明扼要 |
| 审核人员测试有误(例如使用了错误的设备) | 在 Resolution Center 中回复并提供复现信息;无需正式申诉 |
| 指南 4.3 垃圾内容——首次遇到 | 修复后重新提交,并体现实质性差异;不要申诉 |
| 实际符合要求但仍被指出违反子政策 | 提供证据(截图、代码引用)进行申诉 |
| 5.6.1 开发者账号威胁/封禁 | 立即申诉,提供背景说明,不要置之不理 |
Apple App Review Board 的回复时间:5–10 个工作日。不要为小问题申诉——修复后重新提交更快。
加急审核(Apple)
通过 App Store Connect → Contact Us → App Review → Expedited Request 申请。合理理由包括:
- 影响用户的严重错误修复
- 有时效性的事件(与特定日期挂钩的发布、合作伙伴集成)
- 安全修复
不要以营销为由提出申请——Apple 会拒绝,并可能标记你的账号。
输出模板
REJECTION DIAGNOSIS — <App Name>
REJECTION TYPE:
Platform: Apple / Google
Guideline / Policy: <number>
Bucket: <category from playbook>
Severity: low / medium / high (fix complexity)
ROOT CAUSE:
<one paragraph in plain English>
FIX PLAN:
Code changes: <list>
Metadata changes: <list>
Configuration changes (Info.plist, ASC settings): <list>
Estimated effort: <hours>
RESOLUTION CENTER RESPONSE (draft):
<use template above>
RESUBMISSION CHECKLIST:
[ ] Tested on device Apple tested on
[ ] Demo account verified
[ ] Build number incremented
[ ] Privacy nutrition labels match
[ ] Response posted in Resolution Center
[ ] Expedited review requested (if justified)
POST-RESUBMISSION:
- Expected re-review: 24-48h Apple / variable Google
- If rejected again: <next escalation step>
预防未来被拒
解决问题后,运行 aso-audit,在提交前发现下一个可能导致拒绝的问题。提交前的常见检查项:
- 在支持的最旧 iOS/Android 版本上测试
- 所有 NSUsageDescription 字符串都使用便于用户理解的语言撰写
- 隐私政策 URL 可访问,且与应用内的数据收集情况一致
- 截图中没有第三方徽标/商标
- 没有“BETA”“BUG FIXES”或笼统的描述
- 演示账号已准备就绪,并填充了符合实际情况的数据
- 除任何第三方社交登录外,也提供 Sign in with Apple
跨技能交接
- 获批后,优化商店详情 →
aso-audit - 需要全面修订隐私营养标签 →
metadata-optimization(描述)+ 手动更新 ASC - 因付费墙流程导致拒绝 →
paywall-optimization - 因引导流程中的权限提示导致拒绝 →
onboarding-optimization