React-native-iap: RNIap.requestPurchase ne répond pas dans iOS

Créé le 13 mai 2020  ·  11Commentaires  ·  Source: dooboolab/react-native-iap

Version de react-native-iap

4.4.8

Version de réagir-natif

0.61.5

Les plates-formes sur lesquelles vous avez rencontré l'erreur (IOS ou Android ou les deux ?)

iOS

Comportement prévisible

await RNIap.requestPurchase(sku, false)
console.log('REQUEST OVER') 

DEMANDE OVER à imprimer.

Comportement réel

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)

Environnement testé (émulateur ? Périphérique réel ?)

Dispositif réel et simulateur

Étapes pour reproduire le comportement

 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>)
🚶🏻 stale

Commentaire le plus utile

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é...

Tous les 11 commentaires

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.

Cette page vous a été utile?
0 / 5 - 0 notes