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

React Native Iap获取产品数组为空问题求助

解决思路

1. 内购产品配置校验

  • 确认com.app.plandetailed的SKU与App Store Connect中配置的完全一致,iOS对SKU的大小写、特殊字符严格匹配,不能有任何差异。
  • 检查产品状态:确保产品处于**「准备提交」或「已批准」**状态,且已关联到对应App版本(新添加的产品需绑定到已提交/可测试的App版本)。
  • 确认内购产品的价格层级已完整设置,无未完成的地区价格配置项。

2. 测试环境与账号校验

  • 必须使用沙盒测试账号测试,不能用普通Apple ID。在设备设置中退出当前账号,触发内购时选择「使用现有的沙盒账号」登录。
  • 确认测试设备iOS版本支持对应内购类型,App签名使用的Bundle ID与App Store Connect中完全一致。
  • 检查Xcode项目配置:在Signing & Capabilities中确认已添加In-App Purchase权限。

3. React Native IAP 代码与配置适配

  • 升级到v12.x版本后,确认API调用格式正确:新版getProducts需传入{ skus: itemSkus }对象而非直接传数组,可对应版本文档核对。
  • 调用getProducts前确保已执行initConnection()初始化连接,添加try-catch捕获初始化是否失败。
  • 验证Platform.select是否正确识别iOS环境,通过console.log(itemSkus)确认传入的SKU数组是否为["com.app.plandetailed"]。

4. 第三方依赖冲突排查

  • 临时移除react-native-razorpay依赖,重新打包测试,排查是否因依赖冲突导致内购服务异常。
  • 清理项目缓存:执行rm -rf node_modules && yarn install(或npm install),iOS端执行pod deintegrate && pod install,同时清除Xcode的Derived Data。

5. 日志与错误定位

  • 为getProducts添加完整错误捕获:
    try {
      const products = await RNIap.getProducts(itemSkus);
      console.log('Products:', products);
    } catch (error) {
      console.error('Get products error:', error);
    }
    
    查看是否有「SKU无效」「无法连接到App Store」等具体错误提示。
  • 查看Xcode控制台的系统日志,搜索「In-App Purchase」相关报错,Apple会返回明确的错误码与原因。

内容的提问来源于stack exchange,提问作者Rover

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:52:46