React-native-iap: يتم استدعاء buyUpdatedListener عدة مرات ، أحيانًا أكثر من 20 مرة

تم إنشاؤها على ٨ سبتمبر ٢٠٢٠  ·  12تعليقات  ·  مصدر: dooboolab/react-native-iap

نسخة من رد فعل - أصلية - IAP

"رد فعل-أصلي-إيب": "^ 4.5.3"

نسخة من رد الفعل الأصلي

"تفاعل أصلي": "0.62.0"

المنصات التي واجهت الخطأ فيها (IOS أو Android أو كليهما؟)

iOS (لم يتم اختباره على Android حتى الآن)

سلوك متوقع

يجب أن يتم استدعاء buyUpdatedListener فقط بعدد مرات تحميل المكون

السلوك الفعلي

تم استدعاء buyUpdatedListener 20 مرة في بضع ثوانٍ ، وفي كثير من الأحيان عندما أفتح التطبيق يتم استدعاؤه عدة مرات

بيئة اختبار (محاكي؟ جهاز حقيقي؟)

جهاز حقيقي ، بيئة رمل

خطوات إعادة إنتاج السلوك

اتبع التعليمات حسب الصفحة الرئيسية

لدي حاليًا علامة PurchaseUpdatedListener التي يتم إرفاقها بمستمع في componentDidMount () ، أحيانًا عندما أفتح تطبيقي ، سيتم إطلاقه عدة مرات. هذا يحدث في txns التي اتصلت بها finishTransaction. هل يرى أي شخص شيئًا كهذا؟

🕵️‍♂️ need more investigation 🙏 help wanted 🤖 android

التعليق الأكثر فائدة

نفسه هنا. في كل حدث تجديد تلقائي ، أتلقى الاشتراك الفعلي للتجديد التلقائي وبعد بضع ثوانٍ أتلقى جزءًا كبيرًا من 135 عنصر شراء من purchaseUpdatedListener . أشعر أن هذا هو سجل الشراء بالكامل. حاولت الاتصال بكل من finishTransaction و finishTransactionIOS لاستهلاك المعاملات لكنها لا تغير أي شيء.

في حدث التجديد التلقائي التالي ، يزداد هذا الجزء الكبير من المعاملات (136 ، 137 ، ...). المعاملات هي فقط اشتراكات التجديد التلقائي الخاصة بي. لا يظهر أي من منتجاتي الاستهلاكية / غير الاستهلاكية في القائمة.

ال 12 كومينتر

نفس الشيء بالنسبة لي ، لكنني أسمي تدفق الشراء قيد التنفيذ

const { productId } = args
purchaseUpdatedListener(async (purchase) => {
    if (!purchase.transactionReceipt) {
        Alert("Error")
    }
    ...
})
purchaseErrorListener(error => {
    ...
})
await requestPurchase(productId, false)

لدي 4 منتجات تجريبية وأحصل على 4 مرات purchaseUpdatedListener 4 ، لكن تم طلب الشراء لواحد منهم فقط

حاولت إنهاء تلك المعاملات ولكن لا تزال مكالمات متعددة

هل العنصر يتم تجديده تلقائيًا؟ أعتقد أن ما يحدث هو أنه في وضع الحماية ، فإن فترة التجديد هي 5 دقائق فقط لاشتراكي الشهري. لذلك سترسل Apple حدثًا عند كل تجديد ، لذلك إذا تم إغلاق التطبيق لمدة 10 دقائق ، فسيكون هذا إشعارين سأحصل عليه عند فتح التطبيق.

هل يمكن لأي شخص تأكيد أن هذا هو السلوك المتوقع لتلقي إشعارات بشأن التجديد التلقائي وليس فقط عند الشراء؟

مشترياتي قابلة للاستهلاك مرة واحدة

نفسه هنا. في كل حدث تجديد تلقائي ، أتلقى الاشتراك الفعلي للتجديد التلقائي وبعد بضع ثوانٍ أتلقى جزءًا كبيرًا من 135 عنصر شراء من purchaseUpdatedListener . أشعر أن هذا هو سجل الشراء بالكامل. حاولت الاتصال بكل من finishTransaction و finishTransactionIOS لاستهلاك المعاملات لكنها لا تغير أي شيء.

في حدث التجديد التلقائي التالي ، يزداد هذا الجزء الكبير من المعاملات (136 ، 137 ، ...). المعاملات هي فقط اشتراكات التجديد التلقائي الخاصة بي. لا يظهر أي من منتجاتي الاستهلاكية / غير الاستهلاكية في القائمة.

وبالمثل هنا ، أؤكد أنه يتصل بالمستمع بنفس عدد مرات الشراء في سجل الشراء.

لدي بعض المشاكل. يحدث فقط عندما يتم تمكين الاشتراك.

كانت لدي تجربة مماثلة مع iOS 14.

يبيع تطبيقي اشتراكًا يتجدد تلقائيًا.
أعتقد أن هذه المشكلة حدثت منذ أن اشتريت نفس الاشتراك مرة أخرى.

قد يكون الارتباط التالي ذا صلة بهذه المشكلة.
https://developer.apple.com/forums/thread/659529

ألق نظرة على هذا المنشور
المشكلة هي إنهاء المعاملة والإنهاء ، لا يعمل TransactionIOS لنظام iOS الآن ، فهذه دائمًا تعود غير محددة ، بحيث لا يمكنك إنهاء المعاملة وتعلق في المعاملة المعلقة. عند فتح التطبيق الخاص بك ، سيتم التعامل مع جميع المعاملات المعلقة في PurchaseUpdatedListener ... ولهذا السبب حصلت على 20+ مرة.
: (((شخص ما يصلح هذا plsssssss

ألق نظرة على هذا المنشور
المشكلة هي إنهاء المعاملة والإنهاء ، لا يعمل TransactionIOS لنظام iOS الآن ، فهذه دائمًا تعود غير محددة ، بحيث لا يمكنك إنهاء المعاملة وتعلق في المعاملة المعلقة. عند فتح التطبيق الخاص بك ، سيتم التعامل مع جميع المعاملات المعلقة في PurchaseUpdatedListener ... ولهذا السبب حصلت على 20+ مرة.
: (((شخص ما يصلح هذا plsssssss

https://github.com/dooboolab/react-native-iap/issues/1160#issuecomment -716525603
لقد قمت بنشر رد هنا ومن المتوقع بالفعل أن finishTransaction لا يفي بالوعد.
نحتاج إلى التحقق من إنهاء المعاملة بالفعل عن طريق وضع جانب السجل iOS والتحقق مما إذا كان يدخل في بيان if .

أرى نفس ما هو مذكور هنا: https://github.com/dooboolab/react-native-iap/issues/1172#issuecomment -721676878.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات