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

react-native-iap调用getSubscriptions返回空数组(Android端问题)

React Native IAP Android端getSubscriptions返回空数组问题排查

问题描述

使用react-native-iap实现内购功能,iOS端运行正常,但Android端调用getSubscriptions始终返回空数组,该问题已持续2周,多种尝试后仍未解决。

已尝试方案

  • 已添加账单权限:<uses-permission android:name="com.android.vending.BILLING" />
  • Google Play控制台已正确添加订阅且状态为活跃
  • 应用已发布至Google Play
  • 添加授权测试用户无效,普通用户也无法正常获取订阅列表
  • 已在真实Android设备上测试,未使用模拟器
  • 代码中优先执行await initConnection();且该步骤运行正常
  • 调用await getSubscriptions({ skus });返回空数组
  • 经Android Studio调试,确认代码执行了queryProductDetailsAsync()但仍返回空数组

环境版本

  • react-native-iap:10.0.6(也测试过11.0.0、10.0.1版本)
  • react-native:0.68.2
  • expo:~45.0.0

预期与实际行为

  • 预期:getSubscriptions返回有效的订阅产品数组
  • 实际:Android端返回空数组

可能的解决步骤

  1. 严格核对SKU格式
    Android对SKU的大小写、特殊字符完全敏感,确保代码中传入的skus数组每个值,和Google Play控制台订阅产品的产品ID完全一致,包括大小写、下划线、连字符等细节。

  2. 确认应用签名匹配
    Google Play内购要求应用签名证书与控制台配置一致。如果测试发布版本,必须用发布签名打包APK;内部测试轨道也要核对签名指纹。可在Google Play控制台「应用签名」页面查看证书信息,和本地签名文件对比。

  3. 检查订阅产品的发布状态
    即使订阅显示「活跃」,也要确认已发布到对应测试/正式轨道。新创建的订阅可能需要等待1-2小时才能被API获取到。同时检查产品的定价、地区可用性配置,确保没有限制测试地区或遗漏关键设置。

  4. 匹配Billing Library版本
    react-native-iap不同版本依赖的Google Billing Library版本不同:

    • v10.x对应Billing Library 4.x
    • v11.x对应Billing Library 5.x
      在android/build.gradle中手动指定版本,避免冲突:
    dependencies {
        implementation 'com.android.billingclient:billing:4.0.0' // 适配react-native-iap 10.x
        // 或 implementation 'com.android.billingclient:billing:5.0.0' 适配react-native-iap 11.x
    }
    
  5. 排查Expo环境配置
    使用Expo 45时,不能用Expo Go测试内购,必须使用自定义开发客户端或构建正式APK。同时检查app.json中是否添加了内购相关权限配置,确保Expo插件正确集成。

  6. 查看详细错误日志
    在Android Studio的Logcat中过滤「BillingClient」关键词,查看是否有SKU_NOT_FOUND、SERVICE_DISCONNECTED等错误提示。也可以给getSubscriptions添加错误捕获,打印完整错误信息:

    try {
      const subscriptions = await getSubscriptions({ skus });
      console.log(subscriptions);
    } catch (error) {
      console.error('获取订阅失败:', error);
    }
    
  7. 更新Google Play服务
    确保测试设备上的Google Play服务是最新版本,旧版本可能导致Billing API调用异常。在设备「设置-应用-Google Play服务」中检查并更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:05:29