"react-native-iap": "^2.0.3",
iOS
Fait un achat
achat const = attendre RNIap.buyProductWithoutFinishTransaction (productId)
const {transactionReceipt, purchaseToken} = achat
sendToServer (transactionReceipt, {
onSuccess: () => {
RNIap.finishTransaction ()
RNIap.consumeAllItems ()
}})
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
.
Appareil (bac à sable)
Je ne suis pas sûr.
@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
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é:
Je ne sais pas comment mais peut-être pouvons-nous exposer cette fonctionnalité dans la bibliothèque?