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

使用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,提问作者Марко Лазар

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 13:31:07