gpt4 book ai didi

javascript - 在应用程序购买错误中 react native Android

转载 作者:行者123 更新时间:2023-11-29 23:05:12 24 4
gpt4 key购买 nike

react-native-iap 版本

^2.4.1

react-native版本

16.6.3

您遇到错误的平台(IOS 或 Android 或两者?)

安卓

预期行为

列出元素或购买元素

实际行为

产品数组为空

测试环境(模拟器?真机?)

真实设备

重现该行为的步骤

我有两个错误:E_UNKNOWN 发生未知或意外错误。请稍后再试。添加购买监听器仅在 ios 中提供。这是我的项目 ID:ozann_ozan

部分代码:

<TouchableOpacity 
onPress={() => this.buyItem('ozann_ozan')}
>
const itemSkus = Platform.select({
ios: [
'com.example.coins100'
],
android: [
'com.bettipspro'
]
});
      componentWillMount() {
this.getAvailablePurchases();
this.getItems();
}
async componentDidMount() {
try {
const products = await RNIap.getProducts(itemSkus);
console.log(products);
this.setState({ products });
} catch(err) {
console.warn(err); // standardized err.code and err.message available
}
}
getItems = async() => {
const products = await RNIap.getProducts(itemSkus);
console.log(itemSkus);
try {
const products = await RNIap.getProducts(itemSkus);
// const products = await RNIap.getSubscriptions(itemSkus);
console.log('Products', products);
this.setState({ productList: products });
} catch (err) {
console.warn(err.code, err.message);
}
}
getAvailablePurchases = async() => {
console.log('eben');
try {
console.info('Get available purchases (non-consumable or unconsumed consumable)');
const purchases = await RNIap.getAvailablePurchases();
console.info('Available purchases :: ', purchases);
Alert.alert(purchases.length);
if (purchases && purchases.length > 0) {
Alert.alert('purchases.length');
this.setState({
availableItemsMessage: `Got ${purchases.length} items.`,
receipt: purchases[0].transactionReceipt,
});
}
} catch (err) {
console.warn(err.code, err.message);
Alert.alert(err.message);
}
}
buyItem = async(sku) => {
console.info('buyItem: ' + sku);
try {
const purchase: any = await RNIap.buyProduct(sku);
this.setState({ receipt: purchase.transactionReceipt }, () => this.goToNext());
} catch (err) {
console.warn(err.code, err.message);
const subscription = RNIap.addAdditionalSuccessPurchaseListenerIOS(async(purchase) => {
this.setState({ receipt: purchase.transactionReceipt }, () => this.goToNext());
subscription.remove();
});
}
}

最佳答案

我遇到了同样的问题,尽管这有点老了,但我认为为遇到问题的人提供一些支持会很有用。因为我自己刚遇到这个问题,而且文档并没有真正清楚地提到这一点,这很烦人。

仅限 android - 您需要打开与计费服务的连接。这曾经是 RNIAP.prepare(),但现在是 RNIAP.initConnection()。这在 iOS 上没有任何作用,但它是 RNIAP.getProducts(itemSkus) 工作的必需步骤。

此外,如果您尝试接收订阅,出于某种原因它在 iOS 上是不可知的,如果您调用 RNIAP.getProducts(itemSkus) 就可以获取它们,但是android 你需要将它们指定为订阅才能工作。您可以使用 RNIAP.getSubscriptions(itemSkus) 执行此操作。

为了解决不同的问题,我在 Android 和 iOS 上为此奋斗了几个小时,希望这对您有所帮助。

干杯

关于javascript - 在应用程序购买错误中 react native Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54923006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com