React-native-iap: purchaseUpdatedListener étant appelé plusieurs fois, parfois plus de 20 fois

Créé le 8 sept. 2020  ·  12Commentaires  ·  Source: dooboolab/react-native-iap

Version de react-native-iap

"react-native-iap": "^ 4.5.3"

Version de react-native

"react-native": "0.62.0"

Plateformes sur lesquelles vous avez rencontré l'erreur (IOS ou Android ou les deux?)

iOS (pas encore testé sur Android)

Comportement attendu

purchaseUpdatedListener ne doit être appelé autant de fois que le composant est monté

Comportement réel

purchaseUpdatedListener a été appelé 20 fois en quelques secondes, de temps en temps lorsque j'ouvre l'application, elle est appelée plusieurs fois

Environnement testé (émulateur? Real Device?)

Appareil réel, environnement sandbox

Étapes pour reproduire le comportement

Suivez les instructions de la page principale

J'ai actuellement purchaseUpdatedListener attaché à un auditeur dans componentDidMount (), parfois lorsque j'ouvre mon application, elle se déclenche plusieurs fois. Cela se produit sur les txns sur lesquels j'ai appelé finishTransaction. Quelqu'un voit-il quelque chose comme ça?

🕵️‍♂️ need more investigation 🙏 help wanted 🤖 android

Commentaire le plus utile

Pareil ici. À chaque événement de renouvellement automatique, je reçois l'abonnement auto-renouvelable et quelques secondes plus tard, je reçois un gros morceau de 135 objets d'achat du purchaseUpdatedListener . Je pense que c'est tout mon historique d'achat. J'ai essayé d'appeler à la fois finishTransaction et finishTransactionIOS pour consommer les transactions mais cela ne change rien.

Lors du prochain événement de renouvellement automatique, ce gros morceau de transactions augmente (136, 137, ...). Les transactions ne sont que mes abonnements à renouvellement automatique. Aucun de mes produits consommables / non consommables n'apparaît sur la liste.

Tous les 12 commentaires

Pareil pour moi, mais j'appelle le flux d'achat en action

const { productId } = args
purchaseUpdatedListener(async (purchase) => {
    if (!purchase.transactionReceipt) {
        Alert("Error")
    }
    ...
})
purchaseErrorListener(error => {
    ...
})
await requestPurchase(productId, false)

J'ai 4 produits à tester et je reçois purchaseUpdatedListener 4 fois, mais l'achat n'a été demandé que pour l'un d'entre eux

J'ai essayé de terminer ces transactions mais toujours plusieurs appels

L'article est-il renouvelé automatiquement? Je pense que ce qui se passe, c'est parce que c'est dans le bac à sable que la période de renouvellement n'est que de 5 minutes pour mon abonnement mensuel. Donc, Apple enverra un événement à chaque renouvellement, donc si l'application a été fermée pendant 10 minutes, c'est 2 notifications que je recevrai à l'ouverture de l'application.

Quelqu'un peut-il confirmer qu'il s'agit du comportement attendu pour recevoir des notifications sur un renouvellement automatique et pas seulement sur l'achat?

Mon achat est un consommable unique

Pareil ici. À chaque événement de renouvellement automatique, je reçois l'abonnement auto-renouvelable et quelques secondes plus tard, je reçois un gros morceau de 135 objets d'achat du purchaseUpdatedListener . Je pense que c'est tout mon historique d'achat. J'ai essayé d'appeler à la fois finishTransaction et finishTransactionIOS pour consommer les transactions mais cela ne change rien.

Lors du prochain événement de renouvellement automatique, ce gros morceau de transactions augmente (136, 137, ...). Les transactions ne sont que mes abonnements à renouvellement automatique. Aucun de mes produits consommables / non consommables n'apparaît sur la liste.

Idem ici, je confirme qu'il appelle l'auditeur le même nombre de fois que le nombre d'achats dans l'historique des achats.

J'ai un problème. Cela se produit uniquement lorsque l'abonnement est activé.

J'ai eu une expérience similaire avec iOS 14.

Mon application vend un abonnement à renouvellement automatique.
Je pense que ce problème est survenu depuis que j'ai acheté à nouveau le même abonnement.

Le lien suivant peut être pertinent pour ce problème.
https://developer.apple.com/forums/thread/659529

jetez un œil à ce post
le problème est que finishTransaction et finishTransactionIOS ne fonctionnent pas pour iOS maintenant, ceux-ci retournent toujours indéfinis, de sorte que vous ne pouvez pas terminer la transaction et qu'ils sont bloqués dans la transaction en attente. Lorsque vous ouvrez votre application, TOUTES les transactions en attente seront traitées dans purchaseUpdatedListener ... c'est pourquoi vous avez eu plus de 20 fois.
: (((quelqu'un corrige ce plsssssss

jetez un œil à ce post
le problème est que finishTransaction et finishTransactionIOS ne fonctionnent pas pour iOS maintenant, ceux-ci retournent toujours indéfinis, de sorte que vous ne pouvez pas terminer la transaction et qu'ils sont bloqués dans la transaction en attente. Lorsque vous ouvrez votre application, TOUTES les transactions en attente seront traitées dans purchaseUpdatedListener ... c'est pourquoi vous avez eu plus de 20 fois.
: (((quelqu'un corrige ce plsssssss

https://github.com/dooboolab/react-native-iap/issues/1160#issuecomment -716525603
J'ai posté une réponse ici et on s'attend à ce que finishTransaction ne résout pas la promesse.
Nous devons vérifier qu'il termine réellement la transaction en mettant le journal du côté iOS et en vérifiant s'il entre une instruction if .

Je vois la même chose que celle mentionnée ici: https://github.com/dooboolab/react-native-iap/issues/1172#issuecomment -721676878.

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