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

React Native IAP getAvailablePurchases()在iOS正式版返回空数组问题

解决react-native-iap正式版getAvailablePurchases()返回空数组的问题

可能的原因及对应解决方案

1. 本地缓存交易记录不可靠

getAvailablePurchases()仅返回设备本地缓存的未完成或未调用finishTransaction的已完成交易。正式环境中,苹果会自动清理已完成交易的本地缓存,导致该方法返回空数组。

解决方案:
改用refreshReceipt()获取最新收据,结合getReceiptIOS()直接提取应用收据,而非依赖本地交易缓存:

import * as RNIap from 'react-native-iap';

const init = await RNIap.initConnection();

if (init) {
  try {
    // 刷新收据确保获取最新状态
    await RNIap.refreshReceipt();
    let receipt = null;
    
    // 先尝试从本地交易中获取收据
    const purchases = await RNIap.getAvailablePurchases();
    if (purchases.length > 0) {
      const sorted = purchases.sort((a, b) => b.transactionDate - a.transactionDate);
      receipt = sorted[0].transactionReceipt;
    } else {
      // 本地无缓存,直接提取应用收据
      receipt = await RNIap.getReceiptIOS();
    }

    if (receipt) {
      await API({
        method: 'POST',
        url: '/subscription/check-receipt',
        data: { latestAvailableReceipt: receipt },
      });
    }
  } catch (err) {
    console.error('订阅检查失败:', err);
  } finally {
    await RNIap.endConnection();
  }
}

2. 未正确调用finishTransaction清理缓存

沙盒环境中,未调用finishTransaction会让交易一直留在本地缓存;但正式环境中苹果会自动清理这些记录,导致后续getAvailablePurchases返回空。

解决方案:
每次处理完购买/恢复交易后,务必调用finishTransaction:

const handlePurchase = async (purchase) => {
  try {
    // 提交收据到后端验证
    await API({
      method: 'POST',
      url: '/subscription/check-receipt',
      data: { latestAvailableReceipt: purchase.transactionReceipt },
    });
    // 完成交易,清理本地缓存
    await RNIap.finishTransaction(purchase, false);
  } catch (err) {
    console.error('交易处理失败:', err);
  }
};

3. App Store Connect配置问题

  • 确认订阅项目已正式发布(沙盒测试无需发布,但正式版必须通过审核并上线)。
  • 检查应用捆绑ID与App Store Connect配置完全一致。
  • 确认用户Apple ID所在区域与订阅项目的可用区域匹配。

4. 后端收据验证端点错误

正式版必须使用苹果正式环境的验证端点,若误用沙盒端点会导致验证失败,误以为用户未订阅:

  • 正式环境:https://buy.itunes.apple.com/verifyReceipt
  • 沙盒环境:https://sandbox.itunes.apple.com/verifyReceipt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:50:33