4.4.8
0.61.5
iOS
await RNIap.requestPurchase(sku, false)
console.log('REQUEST OVER')
DEMANDE OVER à imprimer.
Dans l'appareil, j'utilise un compte testeur sandbox, il répond et fonctionne bien. Mais avec tout autre appareil ou simulateur, il ne répond pas ou ne se résout pas. Ceci est essentiel car lors de l'examen de l'application, Apple continue de rejeter ma demande en raison du fait que l'achat ne répond pas.
Il n'y a pas de problème pour RNIap.getProducts(itemSkus)
Dispositif réel et simulateur
async componentDidMount() {
RNIap.getProducts(itemSkus)
.then((products) => {
this.setState({ products: products })
})
.catch((error) => {
console.log(error.message)
})
}
requestPurchase = async (sku) => {
try {
await RNIap.requestPurchase(sku, false)
console.log('REQUESTED OVER')
} catch (err) {
console.warn(err.code, err.message)
}
}
render() {
const { products } = this.state
return (
<View>
{products.map((p, i) => { return (
<TouchableWithoutFeedback onPress={() => this.requestPurchase(p.productId)}>
<Text> BUY </Text>
</TouchableWithoutFeedback> ) })}
</View>)
Pareil ici, mais il semble fonctionner sur Android.
Je l'ai peut-être corrigé en ajoutant
résultat const = attendre RNIap.initConnection();
attendre RNIap.consumeAllItemsAndroid();
console.log('résultat', résultat);
Au début de componentDidMount ;
Faites-moi savoir si cela aide
@hyochan Avez-vous trouvé une solution à cela ? Je rencontre également le même problème sous iOS. C'est extrêmement frustrant, et je ne peux pas dépasser l'examen de l'application car l'appel de RNIap.requestPurchase ne répond pas avec l'alerte, soit en encourageant l'utilisateur à accepter les conditions d'abonnement, soit en confirmant que l'abonnement est déjà actif. Si je force la fermeture de l'application et que je réessaye, cela fonctionne parfois. Je ne sais pas s'il y a un problème avec le bac à sable ou cette bibliothèque.
@smarttouchtechnology Avez-vous appelé initConnection
? Ceci est nécessaire à partir de 4.4.5
.
Il peut être difficile pour @smarttouchtechnology de lire la réponse ci-dessous qui "résout" le "problème" ;)
J'ai eu le même problème et la suggestion de @ Panda313 d'ajouter await RNIap.initConnection()
dans componentDidMount
a fonctionné.
Dommage que ce ne soit pas mieux documenté...
@ Panda313 ... Vous venez de me sauver 1 semaine d'insomnie de rejet de pomme
Quelqu'un pourrait-il ajouter ceci à la documentation afin que davantage de personnes ne rencontrent pas ce problème? Je ne suis pas sûr de la meilleure façon de l'ajouter.
EDIT : ajouté ici. #1088.
N'hésitez pas à donner votre avis (je ne suis pas sûr d'avoir bien fait les choses.)
Je l'ai peut-être corrigé en ajoutant
résultat const = attendre RNIap.initConnection();
attendre RNIap.consumeAllItemsAndroid();
console.log('résultat', résultat);Au début de componentDidMount ;
Faites-moi savoir si cela aide
Pour iOS, je n'ai eu aucune réponse de requestSubscription
. J'ai essayé d'ajouter await RNIap.initConnection();
devant RNIap.requestSubscription
et cela a fonctionné pour moi. Maintenant, je reçois des objets d'achat dans les écouteurs à la racine de l'application. Et il continue également plus loin dans le code après avoir résolu une erreur ou une réponse réussie.
Salut, il semble qu'il n'y ait eu aucune activité sur ce problème récemment. Le problème a-t-il été résolu ou nécessite-t-il toujours l'attention de la communauté ? Ce problème peut être fermé si aucune autre activité ne se produit. Vous pouvez également étiqueter ce problème comme "Pour discussion" ou "Bon premier numéro" et je le laisserai ouvert. Merci pour vos contributions.
Fermeture de ce sujet après une longue période d'inactivité. Si ce problème est toujours présent dans la dernière version, n'hésitez pas à créer un nouveau problème avec des informations à jour.
Commentaire le plus utile
J'ai eu le même problème et la suggestion de @ Panda313 d'ajouter
await RNIap.initConnection()
danscomponentDidMount
a fonctionné.Dommage que ce ne soit pas mieux documenté...