291 lines
9.2 KiB
Markdown
291 lines
9.2 KiB
Markdown
# KeyBoard 提审前清单
|
||
|
||
更新日期:2026-03-07
|
||
|
||
本文档基于两部分信息整理:
|
||
|
||
1. 当前工程静态检查结果与最近几轮已修复项
|
||
2. Apple 截至 2026-03-07 仍公开可查的官方要求
|
||
|
||
目标不是“理论合规”,而是尽量提高这次送审的一次通过率。
|
||
|
||
## 一、当前判断
|
||
|
||
项目本身不属于明显的违规型产品,主要风险集中在:
|
||
|
||
1. 审核员是否能顺畅走完 `安装 App -> 启用键盘 -> 开启 Full Access -> 登录 -> 使用 AI -> 购买/恢复购买`
|
||
2. `RequestsOpenAccess = true` 的隐私披露、权限说明、App Privacy 申报、隐私政策正文是否完全一致
|
||
3. AI / persona / 语音相关内容是否有足够明确的内容安全与举报处理机制
|
||
4. 订阅、协议、隐私、元数据是否存在“能点但不清楚”或“描述过度”的情况
|
||
|
||
## 二、目前已完成
|
||
|
||
以下项已经处理,不再是当前最高风险:
|
||
|
||
1. 协议、隐私政策、会员协议入口已经从空实现改为真实跳转/真实页面兜底
|
||
2. `KBWebViewViewController` 的链接错误已经修复
|
||
3. Web 页返回箭头被遮挡的问题已经修复
|
||
4. `KBPayMainVC` 的 `restoreButton` 英文文案显示不全问题已经修复
|
||
5. 重复的 `Shared` / `KBConfig` / `KBAuthManager` 历史副本已经收敛为顶层 [Shared](/Users/mac/Desktop/项目/公司/KeyBoard/Shared)
|
||
|
||
注意:协议入口虽然已经打通,但如果你还没换成正式线上 URL,这一项只能算“代码层打通”,不算“提审完成”。
|
||
|
||
## 三、提审前必须完成
|
||
|
||
### 1. 替换正式协议 URL 和正式正文
|
||
|
||
必须完成:
|
||
|
||
1. 在 [KBConfig.h](/Users/mac/Desktop/项目/公司/KeyBoard/Shared/KBConfig.h) 中填入正式线上地址:
|
||
- `KB_TERMS_OF_SERVICE_URL`
|
||
- `KB_PRIVACY_POLICY_URL`
|
||
- `KB_MEMBERSHIP_AGREEMENT_URL`
|
||
2. 确保线上页面不是占位页,不是空白页,不是“敬请期待”
|
||
3. 确保协议正文明确写清:
|
||
- 收集哪些数据
|
||
- 是否上传键入文本
|
||
- 是否上传语音
|
||
- 上传目的
|
||
- 是否用于模型训练
|
||
- 数据保留时长
|
||
- 如何删除账号与数据
|
||
4. 确保 App 内文案、隐私政策、App Store Connect 的 App Privacy 三者完全一致
|
||
|
||
对应风险:
|
||
|
||
1. `2.1 App Completeness`
|
||
2. `2.3.1 Accurate Metadata`
|
||
3. `5.1.1 Data Collection and Storage`
|
||
|
||
### 2. 完成 App Store Connect 的 App Privacy 申报
|
||
|
||
必须完成:
|
||
|
||
1. 逐项盘清主 App 与键盘扩展到底收集了什么
|
||
2. 对以下类型重点核对是否需要申报:
|
||
- 账号信息
|
||
- 用户内容
|
||
- 音频数据
|
||
- 诊断数据
|
||
- 使用数据
|
||
- 购买信息
|
||
3. 明确区分:
|
||
- 仅设备本地处理
|
||
- 会发往你方服务器
|
||
- 会共享给第三方 SDK
|
||
4. 如果某项在键盘扩展里只在 Full Access 后发生,也要按“App 整体最全面数据实践”申报
|
||
|
||
重点核对问题:
|
||
|
||
1. 开启 Full Access 后是否会发送键入内容到服务端
|
||
2. 语音输入是否上传服务器做识别或生成
|
||
3. 是否保存聊天内容、persona 对话、历史输入、账号数据
|
||
4. 是否有埋点、诊断、崩溃、分析 SDK
|
||
|
||
对应风险:
|
||
|
||
1. `5.1.1`
|
||
2. App Privacy 填报不实导致的审核驳回
|
||
|
||
### 3. 写清楚 Review Notes
|
||
|
||
这是你这类键盘 App 的高优先级项。
|
||
|
||
必须写进 Review Notes:
|
||
|
||
1. 审核设备上如何启用键盘
|
||
2. 如何在系统设置里打开 Full Access
|
||
3. 哪些功能在键盘扩展内可以直接完成
|
||
4. 哪些功能会拉起主 App 完成
|
||
5. 登录路径
|
||
6. 购买路径
|
||
7. 恢复购买路径
|
||
8. 提供可直接使用的测试账号
|
||
9. 如果 AI、语音、订阅依赖服务器,确认服务在审核期保持可用
|
||
|
||
建议写法要点:
|
||
|
||
1. 用步骤写,不要写泛泛描述
|
||
2. 写清楚“如果 reviewer 没开 Full Access,会看到什么”
|
||
3. 写清楚“为什么某些购买/登录操作会跳回主 App”
|
||
|
||
对应风险:
|
||
|
||
1. `2.1 App Completeness`
|
||
2. 审核员误判“功能不可用”
|
||
|
||
### 4. 补齐 AI / persona / 语音的内容安全兜底
|
||
|
||
必须完成:
|
||
|
||
1. 确认服务端存在内容审核或关键词/策略拦截
|
||
2. 对以下类型有最基本的拦截策略:
|
||
- 成人/性暗示
|
||
- 仇恨/歧视
|
||
- 骚扰/威胁
|
||
- 自残/极端危险内容
|
||
3. App 内明确保留举报入口,并保证流程可用
|
||
4. 如果存在用户生成的人设、头像、简介、评论,也要有举报与处理机制
|
||
|
||
建议补充:
|
||
|
||
1. 在 AI 页面补一段简短说明,明确“内容由 AI 生成,可能不准确”
|
||
2. 在审核备注里说明你有内容审核、举报与处理机制
|
||
|
||
对应风险:
|
||
|
||
1. `1.1 Objectionable Content`
|
||
2. `1.2 User-Generated Content`
|
||
3. `4.7` 涉及聊天/插件型软件时的过滤与举报要求
|
||
|
||
### 5. 订阅展示与订阅元数据核对完成
|
||
|
||
必须完成:
|
||
|
||
1. 订阅页显示内容与 App Store Connect 配置一致
|
||
2. 恢复购买入口可用
|
||
3. 订阅页能访问隐私政策和 Terms / EULA
|
||
4. 审核员能明确知道购买后获得什么权益
|
||
5. 如果有试用、周期、价格说明,必须准确
|
||
|
||
同时核对:
|
||
|
||
1. App 描述、截图、预览里是否把付费能力说清楚
|
||
2. 是否把本来受限于订阅的能力误写成所有用户都可用
|
||
|
||
对应风险:
|
||
|
||
1. `3.1.1`
|
||
2. `3.1.2`
|
||
3. `2.3.2`
|
||
|
||
### 6. 元数据降承诺,避免夸大
|
||
|
||
必须完成:
|
||
|
||
1. 商店描述不要写成“任何 App 都可稳定使用全部 AI / 语音 / 登录 / 购买能力”
|
||
2. 明确第三方键盘天然限制:
|
||
- 安全输入框不可用
|
||
- 某些系统场景不可用
|
||
- 某些能力依赖 Full Access
|
||
3. 不要写“全场景可用”“所有输入框可用”“无需切换即可全部完成”
|
||
|
||
对应风险:
|
||
|
||
1. `2.3.1 Accurate Metadata`
|
||
|
||
### 7. 真机完整走查一遍
|
||
|
||
必须在真机上完成,不建议只看模拟器:
|
||
|
||
1. 首装 App
|
||
2. 注册 / 登录
|
||
3. Apple 登录
|
||
4. 账号注销
|
||
5. 启用键盘
|
||
6. 开启 Full Access
|
||
7. 键盘 AI 输入
|
||
8. 语音输入
|
||
9. 拉起主 App 登录
|
||
10. 拉起主 App 购买
|
||
11. 恢复购买
|
||
12. 协议 / 隐私政策 / 会员协议打开
|
||
13. 断网 / 弱网 / 未登录 / 未开 Full Access 的兜底提示
|
||
|
||
审核关注的是“能不能稳定用”,不是“你本地跑通过一次”。
|
||
|
||
## 四、建议在提审前也完成
|
||
|
||
### 1. 准备一套专门给审核员的测试路径
|
||
|
||
建议准备:
|
||
|
||
1. 一个可登录测试账号
|
||
2. 一组固定可复现的 persona / AI 演示输入
|
||
3. 一条可稳定触发订阅购买页的路径
|
||
4. 一条可稳定触发恢复购买的路径
|
||
|
||
### 2. 核对权限申请时机与文案
|
||
|
||
建议检查:
|
||
|
||
1. 麦克风权限是否只在真正开始语音功能时再申请
|
||
2. 权限文案是否说明真实用途
|
||
3. 是否存在“先要权限,功能再解释”的情况
|
||
|
||
### 3. 做一次审核视角的异常测试
|
||
|
||
建议故意测试:
|
||
|
||
1. 未登录直接进 AI
|
||
2. 未开 Full Access 直接进扩展高级功能
|
||
3. 服务端异常
|
||
4. IAP 商品加载失败
|
||
5. 协议 URL 打不开
|
||
|
||
目标是让 reviewer 遇到异常时也能理解,不会直接判“不可用”。
|
||
|
||
## 五、提交物料清单
|
||
|
||
提审前建议你准备好以下材料:
|
||
|
||
1. 最终版隐私政策 URL
|
||
2. 最终版 Terms / 会员协议 URL
|
||
3. App Store Connect 的 App Privacy 填报截图或内部核对表
|
||
4. Review Notes
|
||
5. 测试账号
|
||
6. 订阅商品配置清单
|
||
7. 审核演示路径截图或内部 SOP
|
||
|
||
## 六、建议的最终提审门槛
|
||
|
||
至少满足下面这些条件再点提交:
|
||
|
||
1. 所有协议/隐私/会员协议入口都能打开正式内容
|
||
2. App Privacy、隐私政策、权限文案、Review Notes 四者一致
|
||
3. 审核员不用猜你产品流程,就能完成键盘启用、登录、AI、订阅体验
|
||
4. AI / persona / 语音内容有明确的审核与举报机制
|
||
5. 真机完整走查至少 1 遍,最好 2 台设备、2 个语言环境
|
||
|
||
## 七、你现在最值得优先做的 5 件事
|
||
|
||
按优先级排序:
|
||
|
||
1. 填正式协议 URL,并把正文改成最终版
|
||
2. 完成 App Store Connect 的 App Privacy 申报核对
|
||
3. 写最终版 Review Notes,并准备测试账号
|
||
4. 核实 AI / 语音 / persona 的内容安全与举报闭环
|
||
5. 真机完整跑通 `启用键盘 -> Full Access -> 登录 -> AI -> 订阅 -> 恢复购买`
|
||
|
||
## 八、官方参考
|
||
|
||
以下页面均为 Apple 官方来源,已于 2026-03-07 核对:
|
||
|
||
1. App Review Guidelines
|
||
https://developer.apple.com/app-store/review/guidelines/
|
||
2. Offering account deletion in your app
|
||
https://developer.apple.com/support/offering-account-deletion-in-your-app/
|
||
3. Manage app privacy
|
||
https://developer.apple.com/help/app-store-connect/manage-app-information/manage-app-privacy
|
||
4. App Privacy Details
|
||
https://developer.apple.com/app-store/app-privacy-details/
|
||
5. Creating a custom keyboard / Custom Keyboard guidance
|
||
https://developer.apple.com/documentation/UIKit/creating-a-custom-keyboard
|
||
https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/CustomKeyboard.html
|
||
|
||
## 九、备注
|
||
|
||
这份清单是“上架执行清单”,不是法律意见,也不是 Apple 的通过保证。
|
||
|
||
如果按当前工程状态直接提,风险仍主要集中在:
|
||
|
||
1. 隐私披露不一致
|
||
2. 审核员走不通键盘链路
|
||
3. AI 内容安全证据不足
|
||
4. 元数据对键盘能力描述过满
|
||
|
||
如果你要继续推进,下一步最值钱的是再补两份文档:
|
||
|
||
1. `Review Notes` 最终版
|
||
2. `App Privacy / 隐私政策披露对照表`
|