#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()