2.4.0-bêta8
0,55,4
Android
La promesse d'achat est rejetée avec E_USER_CANCELLED, "Cancelled."
L'application plante:
01-28 11:21:58.177 2773-2919/ D/RNIapModule: buyItemByType (type: inapp, sku: android.test.canceled, oldSku: null, prorationMode: 0) responseCode: 0(OK)
01-28 11:22:03.509 2773-2919/ D/RNIapModule: Purchase Updated Listener
01-28 11:22:03.509 2773-2919/ D/RNIapModule: responseCode: 0
--------- beginning of crash
01-28 11:22:03.510 2773-2919/ E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules
Process: , PID: 2773
java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference
at com.dooboolab.RNIap.RNIapModule$11.onPurchasesUpdated(RNIapModule.java:436)
at com.android.billingclient.api.BillingClientImpl$1.onReceiveResult(BillingClientImpl.java:151)
at android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java:50)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:192)
at java.lang.Thread.run(Thread.java:764)
Appareil réel
android.test.canceled
onPurchasesUpdated
est invoqué, un NPE est lancé à la ligne 436 Purchase purchase = purchases.get(0);
car purchases
est @Nullable
et null
tandis que responseCode
est égal à 0.Merci pour le problème avec la solution. @johnmartel J'espère que vous nous donnerez un PR
si vous savez déjà comment résoudre le problème.
@hyochan Je travaille sur le problème en ce moment, je soumettrai un PR dès que possible. Le problème est que la bibliothèque manque cruellement de tests et il est difficile d'être sûr que je ne casse rien d'autre.
@johnmartel Ouais. Je souhaite toujours implémenter des modules de test mais actuellement, je manque toujours de temps 😿. Nous devrons vérifier nous-mêmes le temps d'exécution avant de publier.
Que diriez-vous simplement de vérifier si les purchases
sont null
comme ça?
PurchasesUpdatedListener purchasesUpdatedListener = new PurchasesUpdatedListener() {
<strong i="8">@Override</strong>
public void onPurchasesUpdated(int responseCode, <strong i="9">@Nullable</strong> List<Purchase> purchases) {
Log.d(TAG, "Purchase Updated Listener");
Log.d(TAG, "responseCode: " + responseCode);
if (responseCode != BillingClient.BillingResponse.OK) {
rejectPromisesWithBillingError(PROMISE_BUY_ITEM, responseCode);
return;
}
+ if (purchases == null) {
+ rejectPromisesWithBillingError(PROMISE_BUY_ITEM , responseCode);
+ return;
+ }
Purchase purchase = purchases.get(0);
// ...
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 résolu 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.
Commentaire le plus utile
@johnmartel Ouais. Je souhaite toujours implémenter des modules de test mais actuellement, je manque toujours de temps 😿. Nous devrons vérifier nous-mêmes le temps d'exécution avant de publier.