iOS应用内购买提示21102/21105无可用信息 现有解决方案无效
iOS内购沙箱21102错误排查解决指南
1. 先确认沙箱服务状态
先确认Apple官方沙箱测试服务当前是否处于正常运行状态,若官方服务故障,仅需等待服务恢复后重试即可,此类情况通常会在数小时内自行恢复。
2. 沙箱账号配置排查
- 确认当前使用的沙箱账号是在你当前App所属的开发者团队下创建的,跨团队的沙箱账号无法拉取当前团队的内购商品
- 不要在系统正式iCloud登录界面登录沙箱账号,必须到「设置」-「App Store」- 拉到最下方的「沙箱账户」处登录测试
- 新创建的沙箱账号需要等待15-30分钟的生效时间,刚创建就测试大概率会触发21102错误
3. 开发者后台配置排查
- 确认你要拉取的内购商品状态是「准备提交」,已经被废弃、被拒绝状态的商品无法被拉取
- 确认当前测试的App Bundle ID和后台配置内购商品的Bundle ID完全一致,不要用测试版的差异化Bundle ID测试
- 确认你的付费应用协议、税务和银行信息在开发者后台处于生效状态,即使是沙箱测试,这部分信息失效也会导致内购拉取失败
4. 设备侧排查
- 把设备上当前安装的测试App完全卸载,清除所有缓存后重新安装测试
- 到「设置」-「通用」-「传输或还原iPhone」-「还原」- 选择「还原位置与隐私」,重置应用权限后重试
- 测试时不要挂代理、VPN,网络环境优先选择国内原生运营商网络,不要用公司内网、公共WiFi测试
5. 代码侧校验
- 确认你拉取商品的请求里传入的商品ID和后台配置的完全一致,注意大小写、下划线等符号不要写错
- 检查你的内购请求逻辑是否在应用启动后就立即触发,建议延迟2-3秒等应用初始化完成后再发起商品拉取请求
- 如果用了第三方内购SDK,确认SDK版本适配当前你测试的iOS系统版本,旧版本SDK可能不兼容新的沙箱规则
紧急替代测试方案
如果沙箱故障持续时间较长阻塞开发进度,可以用Xcode的本地内购测试配置,不需要连接苹果沙箱服务器,直接在本地配置测试商品即可完成全流程购买测试,不会影响生产环境逻辑。
内容的提问来源于stack exchange,提问作者Dani
相关产品推荐
相关产品推荐

