首页 > 解决方案 > RNIap.getPurchaseHistory() 在 iOS 上总是返回一个空数组

问题描述

总是返回一个空RNIap.getPurchaseHistory数组。无论我是在应用程序启动时还是在购买后调用。在componentDidMount我执行以下操作:

async componentDidMount() {

  await RNIap.initConnection();

  this.purchaseUpdateSubscription = purchaseUpdatedListener(
    async purchase => {
      try {
        // send purchase to the server
        const savedPurchase = await savePurchase(purchase);

        // finish transaction if server returned truthly value
        if (savedPurchase) {
          await RNIap.finishTransaction(purchase, true);

          // always returns en empty array
          console.log('Purchase history', await RNIap.getPurchaseHistory())
        }
      } catch (e) {
        console.log('Error: ', e);
      }
    }
  });
}

buyProduct功能:

buyProduct = async productId => {
  try {
    await RNIap.requestPurchase(productId, false);
  } catch (e) {
    console.warn('Error: ', e);
  }
};

购买后,我收到消息:

你都准备好了。
您的购买成功
[环境:沙盒]。

也许问题可能出在与代码库无关的另一个地方?

标签: iosreact-nativereact-native-iap

解决方案


偶然发现我认为可能是您的解决方案:

将 RNIap.getPurchaseHistory() 包裹在 initConnection() 和 endConnection() 调用周围。在请求购买历史记录之前,也许还要给 RNIap.finshTransaction 更多时间来完成以确保包括最新的购买。

// CODE 
await RNIap.initConnection();
   const purchase_history = await RNIap.getPurchaseHistory()
   console.log(purchase_history)
RNIap.endConnection()

推荐阅读