You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 03:27:04