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添加完整错误捕获:
查看是否有「SKU无效」「无法连接到App Store」等具体错误提示。try { const products = await RNIap.getProducts(itemSkus); console.log('Products:', products); } catch (error) { console.error('Get products error:', error); } - 查看Xcode控制台的系统日志,搜索「In-App Purchase」相关报错,Apple会返回明确的错误码与原因。
内容的提问来源于stack exchange,提问作者Rover
相关产品推荐
相关产品推荐

