诊断 App Store 提交阻塞问题并使用 asc 操作审核健康状态,包括就绪验证、修复路由、状态监控、取消和重试决策。当验证失败、版本处于无效状态、审核状态不明确或卡住、或失败的提交需要修复并重试时使用。对于分阶段、上传、发布和提交执行,请使用 asc-release-flow。
App Store 提交健康
使用此技能解释为何发布无法继续,并管理现有的审核提交。将健康的发布执行交回给 asc-release-flow。
职责边界
此技能负责:
- 就绪验证和阻塞诊断;
- 公共 API、Web 会话和手动修复路由;
- 审核状态和历史;
- 取消和重试决策。
不要从此技能进行分阶段、上传、发布或提交健康的发布。
回答顺序
- 说明版本是就绪、阻塞还是已在审核中。
- 列出每个阻塞项及其证据。
- 区分公共 API 修复与 Web 会话和手动工作。
- 给出一个下一步命令。不要列出整个修复目录。
确定目标
- 解析
APP_ID、版本字符串或VERSION_ID、BUILD_ID、平台以及任何已知的SUBMISSION_ID。 - 使用
asc auth login或ASC_*环境变量配置认证。 - 仅在仓库测试和隔离验证中使用
ASC_BYPASS_KEYCHAIN=1,不要在正常用户会话中使用。 - 一旦目标解析完成,优先使用 ID;当应用、版本或产品解析不明确时停止。
诊断就绪状态
首先运行标准就绪报告:
asc validate --app "APP_ID" --version "1.2.3" --platform IOS --output table
当已知时使用 --version-id "VERSION_ID"。当警告必须使自动化失败时添加 --strict。
向审核专用诊断工具请求有序解释:
asc review doctor --app "APP_ID" --version "1.2.3" --platform IOS --output table
当报告指向构建或版本时收集直接证据:
asc builds info --build-id "BUILD_ID" --output table
asc versions view --version-id "VERSION_ID" --include-build --include-submission --output table
对于数字商品,仅运行相关的产品验证器:
asc validate iap --app "APP_ID" --output table
asc validate subscriptions --app "APP_ID" --output table
将 asc validate 的有序修复计划视为修复队列。在进入下一个阻塞类之前修复并验证一个类别的阻塞。
路由修复
当阻塞是构建处理、元数据、截图、审核详情、加密、内容权限、年龄分级、可用性或版本范围的产品元数据时,使用公共 API 命令。
当诊断识别出这些常见阻塞之一或首次发布可用性差距时,阅读 references/readiness-repairs.md。
仅当 IAP 或订阅验证失败、Apple 要求首次审核附件、或版本化产品必须加入现有审核提交时,阅读 references/digital-goods.md。
仅当验证报告 App 隐私建议或无法通过公共 API 确认发布状态时,阅读 references/app-privacy.md。
当验证报告 Game Center 组件或版本阻塞时,将其交给 asc-release-flow 并请求多项目参考的 Prepare every item 部分。不要通过通用就绪或数字商品修复路由 Game Center。
仅当公共 API 无法覆盖的缺口时使用 Web 会话命令,并说明需要经过身份验证的 Apple Web 会话。当用户拒绝 Web 会话自动化时,保留手动 App Store Connect 后备方案。
判断版本是否健康
当满足以下条件时,版本可以返回给 asc-release-flow:
asc validate没有阻塞问题;- 附加的构建是
VALID; - 元数据、截图、应用信息、审核详情、内容权限、加密、年龄分级、定价和可用性已解决;
- 相关的
asc validate iap和/或asc validate subscriptions检查没有阻塞问题,并且所需的数字商品版本已准备就绪; - 任何 Game Center 版本项目已通过
asc-release-flow的多项目提交参考检查; - App 隐私已确认或已发布。
不要仅仅因为一个验证器成功退出就认为版本就绪。报告任何仍需要 Web 会话或手动检查的警告。
监控审核
当提交 ID 未知时使用应用范围的状态:
asc review status --app "APP_ID" --version "1.2.3" --platform IOS --output table
当可用时使用确切的提交或版本 ID:
asc submit status --id "SUBMISSION_ID" --output table
asc submit status --version-id "VERSION_ID" --output table
使用发布仪表板获取周围的构建和审核信号:
asc status --app "APP_ID" --include builds,appstore,submission,review --output table
使用历史记录区分当前卡住与之前被拒绝或完成的提交:
asc review history --app "APP_ID" --version "1.2.3" --paginate --output table
取消不健康的提交
在取消之前解析确切的活动提交。先预览状态,然后要求确认:
asc submit status --id "SUBMISSION_ID" --output table
asc submit cancel --id "SUBMISSION_ID" --confirm
当按版本解析时,包含应用以进行现代审核提交查找:
asc submit status --version-id "VERSION_ID" --output table
asc submit cancel --version-id "VERSION_ID" --app "APP_ID" --confirm
当确切的审核提交已知时,较低级别的等效命令有效:
asc review submissions-cancel --id "SUBMISSION_ID" --confirm
不要仅仅因为审核时间比预期长就取消提交。首先确认状态和用户的意图。
决定何时重试
没有专门的重试命令。使用以下序列:
- 仅当必须撤回活动提交时才取消。
- 修复已证明的阻塞。
- 重新运行
asc validate和相关产品验证器。 - 确认没有活动提交已经拥有该版本或审核项目。
- 将健康的版本和任何保留的
SUBMISSION_ID交给asc-release-flow执行提交。重用已检查的READY_FOR_REVIEW草稿;仅当没有匹配的草稿或活动提交时才创建提交。
常见失败路由
| 症状 | 首要证据 | 修复路由 |
|---|---|---|
| 版本处于无效状态 | asc validate, asc review doctor |
有序就绪修复 |
| 出口合规必须被批准 | 构建信息和加密声明 | 就绪修复 |
| 找到多个应用信息 | asc apps info list --app "APP_ID" |
解析确切的应用信息 ID |
| IAP 或订阅未就绪 | 产品验证器 | 数字商品参考 |
| Game Center 组件或版本未就绪 | asc validate 诊断 |
asc-release-flow 多项目准备部分 |
| App 隐私发布状态不明确 | 验证建议 | App 隐私参考 |
| 审核似乎卡住 | 审核状态加历史 | 监控;仅在有证据和批准时取消 |
护栏
- 不要使用已移除的
submit-preflight或submit-create快捷方式。 - 不要从此技能提交;将健康执行返回给
asc-release-flow。 - 不要将 Web 会话自动化视为公共 App Store Connect API 覆盖。
- 在验证先前的提交状态和阻塞修复之前不要重试。
- 对于人工诊断使用
--output table,对于自动化使用 JSON。 - 对于 macOS,使用
--platform MAC_OS,同时保持相同的健康生命周期。






