React-native-iap: iOS: cet achat intégré a déjà été acheté.

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

Version de react-native-iap

"react-native-iap": "^2.0.3",

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

iOS

Comportement attendu

Fait un achat

achat const = attendre RNIap.buyProductWithoutFinishTransaction (productId)
const {transactionReceipt, purchaseToken} = achat
sendToServer (transactionReceipt, {
onSuccess: () => {
RNIap.finishTransaction ()
RNIap.consumeAllItems ()
}})

Comportement réel

Boîte de dialogue: "Cet achat intégré a déjà été acheté". Cela ne se produit que pour un SKU, d'autres fonctionnent correctement. Je pense que l'application est en mauvais état et je ne vois pas de moyen de la réparer. J'étais fatigué d'appeler finishTransaction et consumeAllItems lors de l'initialisation, mais cela n'a pas résolu le problème. Autres SKU que je peux acheter plusieurs fois sans problème. Rien n'est retourné pour getPurchaseHistory .

Environnement testé (émulateur? Real Device?)

Appareil (bac à sable)

Étapes pour reproduire le comportement

Je ne suis pas sûr.

📱 iOS 🙏 help wanted

Commentaire le plus utile

J'appelais ce code natif.

Quand je l'ai appelé dans didFinishLaunchingWithOptions currentQueue.transactions était vide, mais l'appeler dans applicationDidBecomeActive fonctionnait.

Cela a fonctionné:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
  // take current payment queue
  SKPaymentQueue* currentQueue = [SKPaymentQueue defaultQueue];
  [currentQueue restoreCompletedTransactions];
  // finish ALL transactions in queue
  //  [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
  [currentQueue.transactions enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    [currentQueue finishTransaction:(SKPaymentTransaction *)obj];
  }]; 
}

Je ne sais pas comment mais peut-être pouvons-nous exposer cette fonctionnalité dans la bibliothèque?

Tous les 16 commentaires

@siderakis Ouais étrange. J'ai déjà corrigé ce problème comme indiqué dans stackoverflow mais se produit toujours dans certains appareils. Je suis prêt à résoudre ce problème aussi. Quel appareil utilisez-vous?

@siderakis Cela pourrait résoudre votre application en mauvais état, je suppose. Pouvez-vous essayer?

Je l'ai essayé et cela n'a pas fonctionné. J'ai également réinstallé l'application et cela n'a pas aidé. Il fonctionne sur un iPad.

J'ai défini un point d'arrêt et il semble que currentQueue.transactions est vide

Chez SKPaymentQueue.h

// Array of unfinished SKPaymentTransactions.  Only valid while the queue has observers.  Updated asynchronously.
@property(nonatomic, readonly) NSArray<SKPaymentTransaction *> *transactions NS_AVAILABLE_IOS(3_0);

<strong i="6">@end</strong>

Peut-être que je l'ai appelé trop tôt

J'ai appelé le code plus tard dans l'exécution des programmes et cela a résolu le problème.

@siderakis Désolé pour la peine. Mais quel code avez-vous appelé?
Le tableau transactions est une propriété, pas une méthode, qui n'est pas dans notre code.
Vouliez-vous dire finishTransaction ?

J'appelais ce code natif.

Quand je l'ai appelé dans didFinishLaunchingWithOptions currentQueue.transactions était vide, mais l'appeler dans applicationDidBecomeActive fonctionnait.

Cela a fonctionné:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
  // take current payment queue
  SKPaymentQueue* currentQueue = [SKPaymentQueue defaultQueue];
  [currentQueue restoreCompletedTransactions];
  // finish ALL transactions in queue
  //  [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
  [currentQueue.transactions enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    [currentQueue finishTransaction:(SKPaymentTransaction *)obj];
  }]; 
}

Je ne sais pas comment mais peut-être pouvons-nous exposer cette fonctionnalité dans la bibliothèque?

@siderakis Oui. C'est ce que je voulais dire dans le numéro 259.
Je pense que l'action peut être n'importe où après applicationDidBecomeActive.
Donc, je vais exposer cette méthode du côté JS, cet utilisateur peut l'appeler à tout moment.
Merci pour votre conseil.

@JJMoon , j'ai le même problème, quand pouvons-nous nous attendre à une résolution pour exposer une méthode comme vous l'avez mentionné ci-dessus. Merci.

@sivrihuseyin Le problème est maintenant bien connu. Nous ferons le patch ce week-end. Merci à tous les émetteurs.

Nous avons publié la solution attendue dans 2.2.0 . Pourriez-vous suivre readme et essayer cette ligne de codes?

Bonjour Hyo Chan,

Merci pour l'information.

J'ai installé la version 2.2.0 et essayé le code. Malheureusement, le
le problème n'est pas encore résolu. pense que la fonction * clearTransaction * n'a pas
été exporté. Dans l'environnement reactNative, il n'y a pas de clearTransaction
fonction à l'intérieur de RNIap.

J'ai vérifié le fichier index.d.ts et je n'ai pas vu la fonction comme
clearTransaction dans ce fichier. déposer.

Sincères amitiés,

Huseyin

Le dimanche 16 septembre 2018 à 14:25 Hyo Chan Jang [email protected]
a écrit:

Fermé # 257 https://github.com/dooboolab/react-native-iap/issues/257
via a5f225d
https://github.com/dooboolab/react-native-iap/commit/a5f225d470af0a85417325d24357667e54aa7078
.

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/dooboolab/react-native-iap/issues/257#event-1848183078 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AiH7bOp96EzsoX82UVxKHK2LkN7PNWVAks5ubjUogaJpZM4WmG_0
.

Bonjour Hyo Chan,

Je suis désolé pour les informations erronées. C'EST RÉPARÉ. Il n'y a pas de problème
plus.

Merci pour votre réponse rapide et votre excellente solution.

Sincères amitiés,

Huseyin

Le dim 16 sept. 2018 à 14:56 Huseyin Sivri
a écrit:

Bonjour Hyo Chan,

Merci pour l'information.

J'ai installé la version 2.2.0 et essayé le code. Malheureusement, le
le problème n'est pas encore résolu. pense que la fonction, * clearTransaction * a
pas été exporté. Dans l'environnement reactNative, il n'y a pas de clearTransaction
fonction à l'intérieur de RNIap.

J'ai vérifié le fichier index.d.ts et je n'ai pas vu la fonction comme
clearTransaction dans ce fichier. déposer.

Sincères amitiés,

Huseyin

Le dimanche 16 septembre 2018 à 14:25 Hyo Chan Jang [email protected]
a écrit:

Fermé # 257 https://github.com/dooboolab/react-native-iap/issues/257
via a5f225d
https://github.com/dooboolab/react-native-iap/commit/a5f225d470af0a85417325d24357667e54aa7078
.

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/dooboolab/react-native-iap/issues/257#event-1848183078 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AiH7bOp96EzsoX82UVxKHK2LkN7PNWVAks5ubjUogaJpZM4WmG_0
.

Il est corrigé avec la version 2.2.0 en appliquant la fonction clearTransaction. Merci
@JJMoon

Pour les futurs Googleurs passant de la v2 à la v3-5, j'ai trouvé cela utile

https://github.com/dooboolab/react-native-iap/blob/de0fc084966fc4d36a9c45f4e27cb166243d4319/README_DEPRECATED.md

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