React Native内购出现Invalid Product ID错误 替换App Store产品后失效
iOS 内购产品更新后查询异常修复方案
- 苹果服务器缓存处理
已删除的App Store内购产品不会立即从苹果全球缓存节点下线,默认需要24~48小时才会彻底失效,测试阶段旧ID可查到缓存结果属于正常情况,不属于代码问题 - 产品ID配置校验
你当前代码中iOS端SKU数组['pkg01', 'pkg02']仍然是旧产品ID,需要替换为新增内购产品的完整ID,注意App Store内购产品ID是全局唯一值,填写时不要遗漏自定义前缀 - 测试环境规范
内购测试必须使用沙箱测试账户,禁止用正式Apple ID直接测试:测试前先在测试设备的「设置-App Store」退出正式账户,触发内购弹窗时再输入沙箱账户的账号密码 - 深度缓存清理
除了清理Xcode缓存,还需完成以下操作排除本地缓存影响:- 进入路径
~/Library/Developer/Xcode/DerivedData删除所有Xcode衍生数据 - 卸载测试设备上的现有测试App后重新打包安装
- 若使用模拟器测试,先执行「重置模拟器内容和设置」操作再打包
- 进入路径
- 代码缺失逻辑补充
你当前代码未处理历史遗留的未完成事务,也没有添加错误监听,未完成的旧内购事务会导致SDK返回缓存的产品数据,你可以在初始化连接成功后增加以下代码:
const initializeConnection = async () => { try { const result = await RNIap.initConnection(); console.log('connection is => ', result); if (result) { // 新增:清理历史未完成事务 const pendingPurchases = await RNIap.getPendingPurchases(); for (const purchase of pendingPurchases) { await RNIap.finishTransaction(purchase, true); } await getProducts() } } catch (err) { console.log('error in cdm => ', err); } };
- 状态校验
确认App Store Connect后台新增的内购产品状态为准备提交或已批准,状态为「草稿」的产品无法被SDK查询到
内容的提问来源于stack exchange,提问作者Saqib Javaid
相关产品推荐
相关产品推荐

