阅读主题
首款游戏接入验收
以下复选框是接入团队待执行的检查,不表示已在你的游戏、设备或支付渠道通过。先完成账号闭环,再接角色与订单。
应用准备
- [ ] 已自助注册或取得管理员分配的开发者账号,并在控制台创建自己的应用。
- [ ] 同一游戏的 H5、Android、iOS、Windows 使用各自 App ID;只申请实际接入的平台,另一款游戏另建应用。
- [ ] 应用状态为已批准;增加平台后已完成整款应用复审。
- [ ] 服务端密钥只在游戏服务器安全配置中保存,网页、APK、iOS App、公开文档与诊断截图均不含密钥。
- [ ] 安装包版本、SHA-256 和目标游戏构建版本已有记录。
身份交换
- [ ] 游戏服务器通过
X-API-Key调用/api/server/auth/exchange,客户端没有直接持有密钥。 - [ ] 错误 App ID、verifier、密钥,以及过期或重复授权码均被拒绝。
- [ ] SDK 使用原始授权事务完成登录,取消或切号后的迟到响应不能恢复旧身份。
- [ ] 同一游戏各端返回相同
gameUserId;不同游戏和玩家的数据互相隔离。 - [ ] 游戏建立自己的会话,退出或撤销时清理旧角色、连接和缓存;平台与游戏会话撤销关联策略已确认。
- [ ] 应用停用或扩端待审时新登录被拒绝;恢复批准后必须重新登录。
- [ ] 指定会话失效 401、账号受限/应用不可用 403 清理对应旧身份;普通权限拒绝和旧响应不误退出新账号。
H5 宿主
- [ ] 已从实际安装包接入,运行环境具备安全上下文、Web Crypto、Fetch 和所需现代 JavaScript 能力。
- [ ] 已实现或适配 UI;
openCenter、浮球事件不会被误认为自动渲染界面。 - [ ] 明确内存/sessionStorage 会话策略;刷新恢复先经服务端验证。
- [ ] iframe、横竖屏、软键盘、触摸拖动、遮挡和事件穿透在真实宿主检查。
- [ ] 组件销毁解除事件监听,旧请求结果不会污染新账号。
Android 宿主
- [ ] 使用 Java 17 兼容构建环境及目标 Gradle/Android 工具链,实际生成并安装 APK。
- [ ] 通过原始
Authorization调用双参数completeGameLogin。 - [ ] Activity 销毁时调用
destroy()并释放 SDK 引用;不把旧 Activity Listener 随 SDK 长期留在单例中。 - [ ] 真机或模拟器检查返回键、旋转、重建、前后台、弱网、软键盘、安全区及低内存恢复。
- [ ] 引擎桥接按实际 Unity/Cocos 版本实现并验收,没有把 AAR 编译成功当作引擎集成通过。
iOS 宿主
- [ ] 已创建并批准 iOS 专属 App ID;新平台没有被误当作默认批准的演示应用。
- [ ] 在 Xcode 用 Swift 5.9+ 解析本地 Swift Package,设置 iOS 15+,实际完成编译和设备运行;源码检查没有被当作 Apple 验收。
- [ ] 实现原生宿主 UI 与可信交换闭包,没有把源码 SDK 误认为自带登录/浮球/账号中心。
- [ ] 所有 SDK 操作遵守
@MainActor;宿主任务与弱引用回调在界面销毁时正确清理。 - [ ] 验证启动恢复与前台登录交错、取消和切号,旧 Keychain 身份不能覆盖新登录;恢复返回
nil不覆盖登录进度。 - [ ] 验证 Keychain 保存/删除失败、设备锁定及退出断网组合;重建实例前确认残留候选与远端撤销得到处理。
- [ ] 正式网络使用 HTTPS;调试 ATS/本地网络配置仅在受控宿主环境启用。
- [ ] 明确演示订单不等于 StoreKit,正式 Apple 交易、验证、履约与退款另行接入和验收。
角色与订单
- [ ] 已确认内置单角色演示与外部区服、多角色模型的差异,正式角色通过可信后端绑定。
- [ ] 价格与优惠来自服务端,订单保存创建时目标角色与商品快照。
- [ ] 断网后先查原订单,复用请求标识重试,不自动另建订单重付。
- [ ] 并发支付、领取和退款不会重复扣款或发放;未付关单释放优惠券。
- [ ] 退款条件与资产回收已验证,付费/赠送余额按原来源退回。
- [ ] 如接真实支付,供应商验签、异步确认、远端幂等发货、退款及三方对账已有独立验证。
交付判断
记录每项结果、目标环境、复现步骤和未解决限制。真实短信、实名、防沉迷、商户结算与正式支付不能用演示结果替代。向团队提交问题时使用脱敏问题模板,兼容条件见兼容性。