RNIap.getPurchaseHistory() всегда возвращает пустой массив в iOS

#ios #react-native #react-native-iap

#iOS #react-native #react-native-iap

Вопрос:

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);
  }
};
 

Когда покупка совершается, я получаю сообщение:

Все готово.
Ваша покупка прошла успешно
[Среда: изолированная среда].

Может быть, проблема может быть в другом месте, не связанном с кодовой базой?

Ответ №1:

Наткнулся на то, что, по моему мнению, может быть решением для вас:

Оберните RNIap.getPurchaseHistory() вокруг initConnection() и вызова endConnection(). Возможно, также дайте RNIap.finshTransaction больше времени для завершения, прежде чем запрашивать историю покупок, чтобы убедиться, что включены последние покупки.

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