使用react-native-iap无法获取App Store订阅的问题求助
解决react-native-iap获取订阅返回undefined的问题
排查要点及修复步骤
1. 确认SKU与产品状态
- 代码里的
Basic必须和App Store Connect中订阅产品的精确SKU完全一致,注意大小写、特殊字符,不能有拼写错误。 - 检查订阅产品状态:必须是已批准状态,草稿或待审核的产品无法被正常获取。
2. 验证iOS测试环境配置
- 确保设备登录了沙盒测试账号(设置→App Store→退出当前账号,登录沙盒账号),正式账号无法在测试环境获取订阅。
- 确认Xcode配置:项目→Signing & Capabilities→已添加
In-App Purchase能力;Info.plist中无需额外权限,但需确保没有禁用内购相关配置。
3. 代码逻辑调整
- 调用
getSubscriptions时明确指定订阅类型,避免类型混淆:const subs = await getSubscriptions({ skus: subSkus, type: 'subs' // 明确指定为订阅类型 }) - 增加初始化错误监听,排查IAP模块是否正常启动:
const { connected, getSubscriptions, iapError } = useIAP() React.useEffect(() => { if (iapError) { console.error('IAP初始化错误:', iapError) } }, [iapError]) - 可给
connected状态添加短暂延迟,避免模块未完全初始化就调用接口:const handleGetSubscriptions = async () => { try { if (connected) { await new Promise(resolve => setTimeout(resolve, 500)) const subs = await getSubscriptions({ skus: subSkus, type: 'subs' }) console.log(subs, 'subs') } } catch (error) { console.error('获取订阅失败:', JSON.stringify(error, null, 2)) } }
4. 沙盒环境特殊处理
- 尽量使用真实iOS设备测试,模拟器的沙盒内购偶尔会出现不稳定的情况。
- 确认App Store Connect中订阅产品已关联到当前测试的App ID下,未关联的产品无法被获取。
内容的提问来源于stack exchange,提问作者Марко Лазар
相关产品推荐
相关产品推荐

