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);
}
};
当购买完成后,我收到以下消息:
你都准备好了
您的购买成功
【环境:沙盒]。
也许问题可能在与代码库无关的另一个地方?
2条答案
按热度按时间jyztefdp1#
偶然发现了一个我认为可能适合你的解决方案:
将RNIap.getPurchaseHistory() Package 在initConnection()和endConnection()调用周围。在请求购买历史记录之前,可能还给予RNIap.finshTransaction更多的时间来完成,以确保包含最新的购买记录。
e1xvtsh32#
根据苹果的文档,他们只存储自动更新的订阅。因此,您必须设法使订阅/产品可用于此用户拥有的其他设备。
管理此功能的步骤:
1.使用https://www.npmjs.com/package/react-native-user-identity包调用getUserId获取用户标识。
1.保存订阅/产品详细信息,并引用服务器上的ID
您可以通过对使用相同apple ID登录的其他设备调用getUserId来获取相同的ID。