2.3.0
ذكري المظهر
اسمحوا sub = انتظار RNIApp.buySubscription ("بعض") ؛
يجب أن ينتظر المستخدم حتى يضغط شراء على طريقة الدفع في التطبيق
لا يمكنني التحقق مما إذا كان المستخدم قد وافق على الاشتراك ، لأنه عند القيام بما يلي:
اسمحوا sub = انتظار RNIApp.buySubscription ("بعض") ؛
إذا (فرعية) {
افعل بعض الاشياء ..
}
يتم تنفيذ كتلة if (الفرعية) فورًا بعد فتح النافذة المنبثقة ، ولكن لا يزال المستخدم لا يقبل الاشتراك
جهاز حقيقي
أيه أفكار؟
هناك طرق أخرى مثل getAvailablePurchases والتي ترجع أيضًا إلى الوعد وتعمل بشكل جيد
تكمن المشكلة في أن buySubscription يجب أن يعيد استدعاء إدخال المستخدم وهو ليس كذلك
أنا أستخدم RN 57 ، أيضًا ، تم الانتهاء من الاشتراك ، يمكنني التحقق من playstore أن الشراء على ما يرام ولكن وعد buySubscription يعود غير محدد
أي مساعدة؟
حسنًا ، لقد رجعت إلى الإصدار 2.2.2 وهو يعمل .. لذا أعتقد أنكم فقدتم شيئًا ما في إصداركم الجديد
@ marcosmartinez7 آسف للكسر هل يمكنك تجربة 2.3.1
؟
مرحبا شكرا!
ليس لدي وقت الآن ولكني سأفعل
@ marcosmartinez7 شكرا يرجى العودة.
dooboolab Issue موجود على iOS أيضًا. تمت تجربة كل من 2.3.1
وكذلك 2.3.2
. كما ذكر من قبل @ marcosmartinez7 2.2.2
يعمل بشكل جيد
أعتقد أنه تم إصلاحه في 2.3.3
. يرجى إعادة الفتح عندما لا يزال هذا يحدث.
dooboolab أنا آسف ، لقد تم التثبيت وإعادة الربط 2.3.5
. لا يزال await RNIap.buySubscription(iapProductId)
يعرض على الفور undefined
على iOS
@ Gaia-Nutrition أعتقد أن مشكلتك مختلفة لأن كود ios
لم يتغير. هل يمكنك محاولة إلغاء الارتباط والربط مرة أخرى؟
dooboolab حاولت الربط 2.2.2
يبدأ العمل مرة أخرى. لكنني سأتحقق مرة أخرى غدًا. ربما سأحاول تثبيت المكون الأصلي يدويًا
dooboolab حسنًا ، لقد قمت الآن بربط الإصدار الجديد 2.3.6
يدويًا. لا يزال الحصول على undefined
. أود المساعدة في حل هذه المشكلة. اسمحوا لي أن أعرف ما يمكنني فعله للمساعدة!
يمكن لشخص ما تأكيد هذا؟ لا ينبغي أن يحدث هذا خاصة في iOS.
dooboolab يمكنني أن أؤكد أن الإصدار 2.3.6 من نظام التشغيل iOS لا ينفذ الوعود ولكن الإصدار 2.2.2 يفعل ذلك (باستخدام جهاز iPhone 5 ، React Native 0.56)
أواجه هذه المشكلة أيضًا في 2.3.7. عندما أحاول استخدام await
يتم استدعاء السطر التالي على الفور بدلاً من انتظار الوعد ، وعندما أستخدم RNIap.buySubscription(subId).then(purchase => {})
فإنه يتعطل بسبب الخطأ لا يمكن قراءة الخاصية ثم غير محدد
نحن نعمل حاليا على هذا. أيضًا ، أي شخص يواجه هذا ، هل اتصلت بـ getSubscriptions
قبل الاتصال الفعلي بـ buySubscription
؟
لقد اختبرت للتو الشراء في تطبيق RNExample. لقد اشتريت الاشتراك باستخدام طريقة buyProductWithoutFinishTransaction ().
أقترح إجراء اختبار مثل RNExample. وتحديث Xcode ، وبناء الإعداد على "تراث" .. أعتقد أن عملية البناء في Xcode غيرت هذا التحديث.
واستخدم جهاز اختبار الرمل المصنوع حديثًا.
تضمين التغريدة الجمع بين buyProductWithoutFinishTransaction()
و finishTransaction()
يعمل على 2.3.7
بينما لا يزال فشل buySubscription()
مباشرة!
@ Gaia- التغذية موافق. ثم استخدم buyProductWithoutFinishTransaction
و finishTransaction
بدلاً من buySubscription
. إجراء الشراء هو نفسه تمامًا.
@ Gaia-Nutrition هل يمكنك تجربة 2.3.8
؟ أيضًا ، هل اتصلت بـ getSubscriptions
قبل buySubscription
؟
dooboolab 2.3.8
لا يزال يفشل باستخدام buySubscription
ومرة أخرى: نعم ، لقد اتصلت بـ getSubscriptions
قبل. لا أعتقد أن buyProductWithoutFinishTransaction()
سيعمل بطريقة أخرى.
لقد اختبرت buySubscription في جهاز iOS في وضع الحماية.
تمكنت من النجاح ، لكنها تظهر بعض رسائل الخطأ.
والاشتراك التلقائي القابل للتجديد لا يصدر إيصالًا.
أقترح استخدام buyProductWithoutFinishTransaction و finishTransaction بدلاً من buySubscription.
ليس لدي حاليًا جهاز للاختبار ، وسأتتبع هذه المشكلة لاحقًا.
يبدو أن هذه مشكلة فقط في iOS
حاليًا. هل انا على حق؟
dooboolab لا ، يحدث أيضًا على Android. ترجع الدالة undefined حتى قبل استدعاء السطر الأول في buyItemByType.
dooboolab سبب المشكلة في index.js: 105. يجب عليك تغيير الخطوط إلى شيء مثل
export const buySubscription = (sku, oldSku, prorationMode) => Platform.select({
ios: () => RNIapIos.buyProduct(sku),
android: () => RNIapModule.buyItemByType(ANDROID_ITEM_TYPE_SUBSCRIPTION, sku, oldSku, -1),
})();
(أعلم أن هذا يتجاهل وضع prorationMode)
لكن بعد الاشتراك بنجاح هناك مشكلة:
E/UncaughtException: 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:427)
at com.android.billingclient.api.BillingClientImpl$1.onReceive(BillingClientImpl.java:136)
at com.android.billingclient.api.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:303)
at com.android.billingclient.api.LocalBroadcastManager.access$000(LocalBroadcastManager.java:44)
at com.android.billingclient.api.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:114)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
mfentross ما هو إصدار react-native-iap
الذي تستخدمه؟ يوجد سطر فارغ في RNIapModule.java:427
. يرجى المحاولة مرة أخرى لآخر واحد.
خطأي: لقد قمت بتحرير بضعة أسطر. لكن إصلاح المشكلة الرئيسية هو تحرير وظيفة buySubscription إلى
"
تصدير const buySubscription = (sku، oldSku، prorationMode) =>
Platform.select ({
ios: () => RNIapIos.buyProduct (SKU) ،
android: () => {
if (! prorationMode) prorationMode = -1 ؛
إرجاع RNIapModule.buyItemByType (ANDROID_ITEM_TYPE_SUBSCRIPTION، sku، oldSku، prorationMode) ؛
} ،
}) () ؛
"
كانت هناك بعض الأقواس غير الضرورية.
تضمين التغريدة فاتني بيان return
. لقد نشرت للتو في 2.3.11
. حتى الآن الروبوت يعمل؟
dooboolab شكرًا ، إنه يعمل الآن 👍
تضمين التغريدة لذلك لدينا مشكلة iOS متبقية فقط.
JJMoon يقول إنه إذا كانت طريقة الالتفاف بـ async
و await
، فإنها تعمل. ومع ذلك ، لست متأكدًا تمامًا من إمكانية تحقيق ذلك. التفاف بـ async
و await
فائض في القيمة المرجعة أليس كذلك؟
لقد نشرت في 2.3.13
. اتمنى لكم جميعا تجربة هذا
يرجى إعادة الفتح عندما لا يزال هذا يحدث. شكرا لك على كل المساعدة.
التعليق الأكثر فائدة
نحن نعمل حاليا على هذا. أيضًا ، أي شخص يواجه هذا ، هل اتصلت بـ
getSubscriptions
قبل الاتصال الفعلي بـbuySubscription
؟