2.4.0 بيتا 8
0.55.4
ذكري المظهر
تم رفض وعد الشراء E_USER_CANCELLED, "Cancelled."
تعطل التطبيق:
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)
جهاز حقيقي
android.test.canceled
onPurchasesUpdated
، يتم طرح NPE في السطر 436 Purchase purchase = purchases.get(0);
لأن purchases
هو @Nullable
و null
بينما responseCode
هو 0.شكرا لمشكلة الحل. johnmartel آمل أن تعطينا PR
إذا كنت تعرف بالفعل كيفية حل المشكلة.
hyochan أنا أعمل على المشكلة الآن ،
تضمين التغريدة أرغب دائمًا في تنفيذ بعض وحدات الاختبار ولكن الوقت الحالي ينفد مني دائمًا 😿. سيتعين علينا التحقق من وقت التشغيل بأنفسنا قبل الإفراج عنه ..
ماذا عن مجرد التحقق مما إذا كان purchases
هو null
مثل ذلك؟
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);
// ...
مرحبًا ، يبدو أنه لم يكن هناك أي نشاط بشأن هذه المشكلة مؤخرًا. هل تم إصلاح المشكلة أم أنها لا تزال تتطلب اهتمام المجتمع؟ قد يتم إغلاق هذه المشكلة في حالة عدم حدوث أي نشاط آخر. يمكنك أيضًا تصنيف هذه المشكلة على أنها "للمناقشة" أو "مشكلة أولى جيدة" وسأتركها مفتوحة. شكرا لمساهماتكم.
التعليق الأكثر فائدة
تضمين التغريدة أرغب دائمًا في تنفيذ بعض وحدات الاختبار ولكن الوقت الحالي ينفد مني دائمًا 😿. سيتعين علينا التحقق من وقت التشغيل بأنفسنا قبل الإفراج عنه ..