React-native-iap: getAvailablePurchases on iOS ، دعنا يظهر مربع حوار "تسجيل الدخول إلى iTunes Store"

تم إنشاؤها على ١ أكتوبر ٢٠١٩  ·  21تعليقات  ·  مصدر: dooboolab/react-native-iap

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

3.4.13

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

0.60.5

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

iOS

سلوك متوقع

getAvailablePurchases ليس له آثار جانبية

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

عند استدعاء getAvailablePurchases على نظام التشغيل iOS ، سيظهر لك مربع حوار "تسجيل الدخول إلى iTunes Store".

هذا لا يحدث على Android.

IMG_0020

أتصل بـ getAvailablePurchases أثناء بدء التطبيق لاستعادة العناصر المشتراة. حسب الوثائق فهمت أن هذه هي الطريقة الشائعة ، أليس كذلك؟

لاستعادة العناصر المشتراة ، اتصلت بـ getAvailablePurchases بناءً على تغييرات AppState . لسوء الحظ ، لا يتم تشغيل AppState فقط عند بدء تشغيل التطبيق ولكن أيضًا في p.ex. بعد العودة إلى التطبيق من مربع حوار (بسبب التطبيق) ، ص. تسجيل الدخول إلى iTunes ... :(

بالنسبة للمستخدم هذا مزعج. خاصة إذا كان المستخدم لا ينوي شراء شيء ما فإنه لا يريد إدخال بيانات اعتماده للتخلص من هذا الحوار.

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

جهاز حقيقي

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

استدعاء getAvailablePurchases

❓ question 📱 iOS 🙏 help wanted 🚶🏻 stale

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

هل هناك طريقة لمعرفة أن المطالبة ستظهر قبل استدعاء getAvailablePurchases ؟ أو بمعنى آخر ، كيف يمكنني اكتشاف ما إذا كان المستخدم متصلاً بـ iTunes أم لا؟

ال 21 كومينتر

عندما تكون قيد التطوير ، يظهر هذا بحيث يمكنك تسجيل الدخول باستخدام حساب وضع الحماية الخاص بك. لا أعتقد أن المستندات واضحة جدًا بشأن هذا الأمر.

أعتقد أنه بالنسبة للإنتاج قد يظهر أيضًا موجهًا عند استدعاء هذه الوظيفة ، أليس كذلك؟ الطريقة التي طبقت بها هذا هي تسميتها عندما يضغط المستخدم على "استعادة الشراء" وبعد استدعاء PurchaseUpdatedListener. لمعرفة ما إذا كان لدى المستخدم اشتراك في المستقبل ، أقوم بتخزينه في الخلفية وتقديمه إلى التطبيق.

يا إلهي voxspoxalexpchin صحيح. alexpchin نظرًا لأننا نعمل على الجسر ، نفترض أن الناس قد يعرفون القليل عن IAP في اللغة الأم. يمثل وضع كل الأشياء الموجودة بالفعل في كل منصة عبئًا كبيرًا على المشرفين. إذا كانت هناك بعض الأعمال على المستند التي تعتقد أنها قد تكون مفيدة ، فلا تتردد في إضافة أي شيء ودفع PR .

mifi لم أشاهد مطلقًا تطبيقًا به زر "استعادة

hyochan أحصل على المطالبة أيضًا بعد توزيع التطبيق عبر TestFlight (أفترض أن هذا هو وضع الإنتاج؟!)

لقد رأيت بعض التطبيقات بهذه الوظيفة. لا أتذكر الآن تمامًا ولكني أعتقد أنه مطلوب (أو مطلوب من قبل شركة Apple) في بعض الحالات. أيضًا في أمثلة إرشادات متجر تطبيقات Apple لديهم هذا الزر:
https://developer.apple.com/app-store/subscriptions/

اعتقدت أيضًا أنه سيكون من السيئ تجربة المستخدم إذا اضطر المستخدم إلى إدخال معرف Apple الخاص به عند فتح تطبيقي ، أعتقد أن هذا سيكون مربكًا. (لقد رأيت هذا يحدث من قبل إذا انتهت الجلسة أو حدث شيء ما مع SSL MITM وهو ما يحدث غالبًا مع صفحات wifi العامة المقصودة)

تحرير: في الواقع يبدو أن التفاح يتطلب ذلك

هل هناك طريقة لمعرفة أن المطالبة ستظهر قبل استدعاء getAvailablePurchases ؟ أو بمعنى آخر ، كيف يمكنني اكتشاف ما إذا كان المستخدم متصلاً بـ iTunes أم لا؟

1+ نفسه

مرحبا شباب ، أي إجابة على هذا؟ كما أفهم أن هذه وظيفة تصحيح أخطاء ولكنني أختبرها باستخدام testflight وأريد منع حدوث ذلك ، فهل من الممكن ترك وضع الحماية بطريقة ما؟

في غضون ذلك ، وجدت الحل بالنسبة لي. لقد قدمت متغيرًا جديدًا isRestorePurchasesEnabled يتم تخزينه بشكل دائم بواسطة تطبيقي.

فيه:

isRestorePurchasesEnabled = false

عند بدء التطبيق:

if (Android || isRestorePurchasesEnabled) {
  call getAvailablePurchases
  on error.code === 'E_USER_CANCELLED' -> isRestorePurchasesEnabled= false
}

عند الشراء:

isRestorePurchasesEnabled = true
requestSubscription ...

إعدادات:

Button "restore purchases" -> isRestorePurchasesEnabled = true

لن يرى المستخدم مطالبة الاتصال بـ iTunes مرة أخرى. لا تحدث الاستعادة إلا بعد إجراء عملية شراء ، وبالتالي تم بالفعل كتابة بيانات الاعتماد في + المخزنة ولن تظهر المطالبة.
الحالة الوحيدة التي سيتم فيها عرض المطالبة ، ولكن مرة واحدة فقط ، هي إذا قام المستخدم بتسجيل الخروج في الإعدادات / حساب iTunes / Sandbox. لا أعرف ما إذا كان هذا موجودًا في وضع الإنتاج.

مرحبًا ، يبدو أنه لم يكن هناك أي نشاط بشأن هذه المشكلة مؤخرًا. هل تم إصلاح المشكلة أم أنها لا تزال تتطلب اهتمام المجتمع؟ قد يتم إغلاق هذه المشكلة في حالة عدم حدوث أي نشاط آخر. يمكنك أيضًا تصنيف هذه المشكلة على أنها "للمناقشة" أو "مشكلة أولى جيدة" وسأتركها مفتوحة. شكرا لمساهماتكم.

مرحبا،
أنا مرتبك حقًا بشأن موضوع واحد ، هل يمكن لأي شخص مساعدتي؟
أرغب في إنشاء وحدة تحكم تتحقق مما إذا كان المستخدم لا يزال يمتلك المنتج أم لا؟
كيف يمكنني اكتشاف إلغاء المستخدم باستخدام هذه المكتبة لكل من متجر Apple و google play؟
لا أعرف حتى ما إذا كان مرتبطًا بطريقة getAvailablePurchase هذه.
شكر.

  • نفسه

أرغب في معرفة ما إذا كان هذا سيحدث أيضًا في الإنتاج ، بدلاً من مجرد TestFlight.
نحن نستخدم هذه الوظيفة حاليًا أثناء تحميل التطبيق ، بدلاً من الضغط على الزر.

لا تزال Apple تنصحنا بعدم استدعاء هذه الوظيفة في التطبيق تلقائيًا أو عند بدء التشغيل

لا تقم باستعادة المشتريات تلقائيًا ، خاصةً عند تشغيل تطبيقك. مطالبات استعادة المشتريات لبيانات اعتماد متجر التطبيقات الخاصة بالمستخدم ، مما يعيق تدفق تطبيقك.

https://developer.apple.com/documentation/storekit/in-app_purchase/restoring_purchased_products# : ~: text = استعادة٪ 20 اكتملت٪ 20 معاملة ، من٪ 20your٪ 20app's٪ 20completed٪ 20transacts.

الطريقة التي طبقتها هي إرسال الإيصال إلى الواجهة الخلفية عندما يضغط المستخدم على الشراء أو يعيد الشراء. بعد ذلك ، يمكن للواجهة الخلفية تزويد التطبيق بحالة الاشتراك في المستقبل.

لا تزال Apple تنصحنا _لا _ باستدعاء هذه الوظيفة تلقائيًا في التطبيق أو عند بدء التشغيل

لا تقم باستعادة المشتريات تلقائيًا ، خاصةً عند تشغيل تطبيقك. مطالبات استعادة المشتريات لبيانات اعتماد متجر التطبيقات الخاصة بالمستخدم ، مما يعيق تدفق تطبيقك.

https://developer.apple.com/documentation/storekit/in-app_purchase/restoring_purchased_products# : ~: text = استعادة٪ 20 اكتملت٪ 20 معاملة ، من٪ 20your٪ 20app's٪ 20completed٪ 20transacts.

الطريقة التي طبقتها هي إرسال الإيصال إلى الواجهة الخلفية عندما يضغط المستخدم على الشراء أو يعيد الشراء. بعد ذلك ، يمكن للواجهة الخلفية تزويد التطبيق بحالة الاشتراك في المستقبل.

بالنسبة لاشتراك التجديد التلقائي ، كيف تحصل على آخر إيصال بدون تحميل من العميل؟

من خلال تشغيل اقتراع دوري في الواجهة الخلفية يتحقق بشكل دوري من كل عملية شراء مثل هذه ، ثم خذ آخر إيصال من التحقق (الذي يأتي من خادم google / apple) واحفظه مرة أخرى في قاعدة البيانات.

من خلال تشغيل اقتراع دوري في الواجهة الخلفية يتحقق بشكل دوري من كل عملية شراء مثل هذه ، ثم خذ آخر إيصال من التحقق (الذي يأتي من خادم google / apple) واحفظه مرة أخرى في قاعدة البيانات.

مرحبا mifi شكرا على الرد السريع! لقد قمت بتخزين latestReceipt على الخادم بعد المعاملة الأصلية. لذا عند إجراء الاستطلاع باستخدام latestReceipt الأصلي ، هل تم إرجاع قيمة latestReceipt ؟

نعم ، ستقوم الوظيفة iap.validate في الواجهة الخلفية باستدعاء apple / google apis الذي يعرض الإيصال الأحدث. يمكن ملاحظة ذلك بسهولة عند اختبار الاشتراكات المتجددة مع فترة تطوير (5 دقائق لكل فترة اشتراك)

شكرًا mifi لقد

مرحبًا ، يبدو أنه لم يكن هناك أي نشاط بشأن هذه المشكلة مؤخرًا. هل تم إصلاح المشكلة أم أنها لا تزال تتطلب اهتمام المجتمع؟ قد يتم إغلاق هذه المشكلة في حالة عدم حدوث أي نشاط آخر. يمكنك أيضًا تصنيف هذه المشكلة على أنها "للمناقشة" أو "مشكلة أولى جيدة" وسأتركها مفتوحة. شكرا لمساهماتكم.

إغلاق هذه القضية بعد فترة طويلة من عدم النشاط. إذا كانت هذه المشكلة لا تزال موجودة في الإصدار الأخير ، فلا تتردد في إنشاء مشكلة جديدة بمعلومات محدثة.

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