研发协作
准备或修复 App Store…
在向 Apple App Store 提交应用前、回应拒审或核对隐私证据时,按当前审核指南和实际 archive 审计并修复阻断问题。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
准备或修复 App Store 提交时:特定
解决思路
- 每次审计先获取当前 App Review Guidelines、Upcoming Requirements、截图规格、required-reason API 文档以及适用的商店地区/权益支付规则。
- 在每个发布阻断项旁记录检查日期和来源。
- 对精确提交版本执行 archive 构建并验证。
- 将阻断上传/审核的问题与普通清理问题分开。
- 每次只修复一类证据不一致问题。
- 重新构建 archive 后,用同一组检查重跑。
- 对关键词、截图说明、产品页元数据或元数据拒审风险的问题,从合规角度回答。
- 明确将关键词研究、排名策略、转化优化、截图排序和 A/B 测试转交 app-store-optimization。
- 将 App Review 元数据指导限制在准确性、字段限制、误导内容风险和截图合规。
- 从 Current Release Requirements 载入带日期的格式、截图和工具链事实。
- 完整提交就绪审计时,先区分阻塞上传/审核的问题和普通清理问题。
- 交叉核对隐私 manifest、App Store 隐私营养标签、隐私政策、ATT 状态、运行时网络行为和 SDK 行为。
- 确保声明与观察到的行为一致。
- 将 archive 缺少当前 Xcode 或平台 SDK 上传下限列为阻断项。
- 将未解决的隐私证据不一致列为阻断项,并按 PrivacyInfo.xcprivacy 要求修复。
- 将不满足 StoreKit 规则的支付路径列为阻断项。
- 将缺少当前 App Store Connect 规格要求的截图集列为阻断项。
- 将不满足 Guideline 2.1 完整性证据的审核访问列为阻断项。
- 对 Guideline 2.1 完整性:确保没有占位内容、损坏/空白流程、无法访问的仅硬件功能,或没有可用演示凭据和审核说明的登录门禁。
- 对 Guideline 2.3 元数据:确保应用名称、类别、描述、关键词和截图准确代表提交的二进制和实际 UI。
- 对 Guideline 4.2 最低功能:确保应用提供有意义的应用专属价值,而不是薄网站或简单复制系统行为。
- 对 Guideline 2.5.1 软件要求:确保 archive 使用 public APIs,并且不会下载代码来改变已审核功能(除有文档记录的例外)。
- 对照当前指南和精确 archive 验证这些项;不要沿用旧版发布清单中的版本或截图要求。
- 当应用代码、可执行文件、动态库或第三方 SDK 使用 Apple required-reason API 类别,或声明收集数据/跟踪行为时,提供 privacy manifest。
- 按 references/privacy-manifest.md 使用完整结构、reason codes 和清单。
- 检查 required-reason API 类别是否包括 file timestamps、system boot time、disk space、active keyboards、UserDefaults;每项使用时确认有获批 reason code。
- 最终提交前重新检查 Apple 当前 required-reason API 文档,不要选择宽泛、图方便或编造的 reason codes。
- 将 required-reason API 声明放在包含使用该 API 代码的 bundle 中;每个 app target、executable、dynamic library、framework 或 SDK bundle,只要包含 manifest 相关代码,都需要匹配的 manifest 声明。
- 每个收集数据、使用 required-reason APIs、启用数据收集/跟踪或联系 tracking domains 的 SDK、executable 或 dynamic library,都需要在包含该代码的 bundle 中处理 manifest;SDK 代码不能依赖宿主应用的 manifest 报告自身使用情况。
- 确保 manifest 声明与 App Store 隐私营养标签、SDK 行为和应用展示功能一致。
- 在 App Store Connect 中设置隐私政策 URL,并确保应用内可访问。
- 隐私政策必须准确描述收集哪些数据、如何使用以及向谁共享。
- 确保 App Store 隐私营养标签与实际数据收集实践一致。
- 让隐私标签、隐私 manifest、SDK 披露和运行时行为讲述同一个故事。
- 数字商品、功能、订阅、虚拟货币、去广告和数字打赏通常需要 IAP,除非当前指南例外、商店地区规则或获批 entitlement 适用。
- 实体商品和现实世界服务使用其普通支付流程。
- 购买前展示价格、期限、续订/试用条款、计费频率和取消条款。
- 验证产品分类、恢复购买、entitlement 验证、延迟/中断购买和 Ask to Buy。
- 加载 `storekit` 了解实现,并在将某路径标记为合规前重新检查当前地区/外部链接规则。
- 从 review-checklists.md 加载针对 navigation、modals、widgets、system features、launch screens、empty states 的完整 HIG 检查。
- 对跨其他公司应用或网站跟踪用户的应用,执行 ATT 要求。
- 在任何跨应用或跨网站跟踪发生前,包括具备跟踪能力的 SDK 行为前,通过 ATTrackingManager.requestTrackingAuthorization 请求权限。
- 尊重用户选择;如果用户拒绝,禁用跨应用和跨网站跟踪。
- 不要将应用功能作为跟踪同意的前提条件(“接受跟踪否则不能使用应用”会被拒绝)。
- 在 NSUserTrackingUsageDescription 中提供清晰用途字符串,解释跟踪用途。
- 如果不跨应用或网站跟踪用户,不要显示 ATT 提示;Apple 会拒绝不必要的 ATT 提示。
- 使用给定 Swift 实现:导入 AppTrackingTransparency,@MainActor func requestTrackingPermission() async,调用 await ATTrackingManager.requestTrackingAuthorization(),按 .authorized、.denied/.restricted、.notDetermined、@unknown default 处理。
- ATT 时机:在应用已激活且用户有上下文理解为何请求跟踪后再请求。
- 不要在首次启动时立即显示 ATT 提示,也不要与其他系统权限提示堆叠显示。
- 对替代分发、浏览器引擎、公证和外部支付路径,按地区和 entitlement 特定规则处理。
- 重新检查当前商店地区规则;将不受支持的路径视为阻断项。
- 每个 entitlement 都需要对应活跃功能,适用时提供特定用途描述,并与 archive 行为匹配。
- 使用 review-checklists.md 中的表格和有效 property-list 示例检查 Entitlements and Usage Descriptions。
- 提交前在 Xcode 中 Archive(Product > Archive,需要 Distribution signing identity);验证 archive 在 Release 配置下 clean build 且零警告。
- 上传到 App Store Connect:使用 Organizer(Distribute App > App Store Connect)或 `xcodebuild -exportArchive`;也可通过 `altool` 或 Transporter 自动上传。
- TestFlight 内部测试:构建处理完成后几分钟内可供内部测试员使用;在至少两种设备尺寸上走查每个屏幕和流程。
- TestFlight 外部测试:外部群组在首次外部分发前需要 Beta App Review;在完整提交前用真实用户验证。
- 提交 App Review:在 App Store Connect 中选择构建、填写所有元数据字段、附上截图,并点击 Submit for Review;为拒审、申诉和元数据修复预留缓冲时间。
- 仅对 Apple 文档记录的关键或时间敏感情况申请 expedited review;在 App Store Connect 的 Contact Us 表单中提供简洁、事实性的理由。
- 使用 Phased Release Schedule 了解 rollout 百分比和 App Store Connect 控制项。
- 保持名称、副标题、关键词、截图和预览准确对应提交的二进制和实际 UI。
- 不要使用价格、竞品词或误导性声明。
- 应用 Metadata Compliance Checklist 中的字段限制和媒体规则。
- 将研究、排名、转化、截图排序和 A/B 测试转交 app-store-optimization。
- 在 App Store Connect 的 Resolution Center 回复,附上简洁证据链。
- 将拒审映射到所引用的指南和确切的已提交行为。
- 如果已修复,指出精确变更并重新提交;如果有争议,解释提交如何满足每项相关要求。
- 附上复现合规所需的证据,如可用演示凭据、截图或聚焦的视频走查。
- 如果仍未解决,通过 Resolution Center 或 App Store Contact 表单(App Review > Appeal)请求 App Review Board 升级,包含完整提交历史和支持证据。
- App Review Board 对该次提交的决定是最终决定;仍可修改应用并重新提交。
- 避免模糊用途描述;点名使用该数据的具体功能。
- 不要将代码质量视为审核合规;并发和事务正确性不能替代隐私、支付、元数据和 entitlement 证据。
- 每次提交前快速检查 Guideline 2.1 完整性和审核访问通过 Blocking Submission Checks。
- 检查应用名称和截图与二进制及当前发布要求匹配。
- 检查隐私证据通过 PrivacyInfo.xcprivacy 要求。
- 检查隐私政策 URL 已设置且应用内可访问。
- 检查支付路径通过 StoreKit 规则。
- 检查支持 Dark Mode 和 Dynamic Type;使用标准导航模式。
- 检查 archive 和 entitlements 通过 Blocking Submission Checks。
- 检查 ATT 行为通过 ATT 标准。
- 使用 references/review-checklists.md 作为审查清单。
- 使用 references/privacy-manifest.md 作为隐私 manifest 指南。
- 查阅 Apple App Review Guidelines:https://developer.apple.com/app-store/review/guidelines/
- 查阅 Apple upcoming SDK requirements:https://developer.apple.com/news/upcoming-requirements/
- 查阅 App Store Connect screenshot specifications:https://developer.apple.com/help/app-store-connect/reference/app-information/screenshot-specifications/
- 查阅 Sosumi required-reason API docs:https://sosumi.ai/documentation/bundleresources/describing-use-of-required-reason-api
适用边界 · 注意事项
- 不适用于非 Apple App Store 发布渠道或非 Apple 平台审核场景。
- 不用于关键词研究、排名策略、转化优化、截图排序和 A/B 测试;这些应转交 app-store-optimization。
- 仅做普通代码质量审查且不关心 App Review 合规时,不应使用本经验替代隐私、支付、元数据和 entitlement 检查。