React-native-iap: أضف دعمًا لـ Amazon Appstore IAP

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

أعتقد أنه سيكون من الجيد الحصول على دعم Amazon Appstore IAP API .

🎯 feature 📢 announcement 🚶🏻 stale

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

رأيت أنه كان هناك عمل في الماضي لدعمه ، ولكن يبدو أنه قديم ولا يمكن استخدامه مع مكتبة التفاعليات الأصلية الحالية:
https://github.com/dooboolab/react-native-iap/issues/370
لذلك بدأت الشوكة الخاصة بي على https://github.com/nochkin/react-native-iap/tree/amazon-iap

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

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

أحد قرارات التصميم الحاسمة في مفترقتي هو كيفية اكتشاف Google مقابل Amazon. أعتقد أن اكتشاف طراز / طراز الجهاز ليس طريقة جيدة لأن المستخدم يمكنه تثبيت Google Play على Kindle والحصول على التطبيق من خلال Google (والعكس صحيح عندما يمكنك تثبيت Amazon Appstore على جهاز قائم على Play). يجب أن ننجز IAP من خلال API المراسل في هذه الحالة.
يتحقق شوكتي من مصدر التثبيت وتتصرف وفقًا لذلك. في بيئة التطوير ، لا يوجد مصدر التثبيت ، لذا يمكنك تعيين احتياطي لتتمكن من اختباره بشكل صحيح.
سأوثق هذا إذا كان هناك أي اهتمام بدمج شوكة بلدي في الريبو المنبع.

ال 35 كومينتر

رأيت أنه كان هناك عمل في الماضي لدعمه ، ولكن يبدو أنه قديم ولا يمكن استخدامه مع مكتبة التفاعليات الأصلية الحالية:
https://github.com/dooboolab/react-native-iap/issues/370
لذلك بدأت الشوكة الخاصة بي على https://github.com/nochkin/react-native-iap/tree/amazon-iap

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

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

أحد قرارات التصميم الحاسمة في مفترقتي هو كيفية اكتشاف Google مقابل Amazon. أعتقد أن اكتشاف طراز / طراز الجهاز ليس طريقة جيدة لأن المستخدم يمكنه تثبيت Google Play على Kindle والحصول على التطبيق من خلال Google (والعكس صحيح عندما يمكنك تثبيت Amazon Appstore على جهاز قائم على Play). يجب أن ننجز IAP من خلال API المراسل في هذه الحالة.
يتحقق شوكتي من مصدر التثبيت وتتصرف وفقًا لذلك. في بيئة التطوير ، لا يوجد مصدر التثبيت ، لذا يمكنك تعيين احتياطي لتتمكن من اختباره بشكل صحيح.
سأوثق هذا إذا كان هناك أي اهتمام بدمج شوكة بلدي في الريبو المنبع.

nochkin يبدو لطيفا حقا. أود معرفة الخطوة لاختبار هذا. ليس لدي أي جهاز amazon . هل لا يزال بإمكاني اختباره؟ آمل أن تتمكن من إحضار بعض المستندات لأولئك الذين لديهم مصلحة في متابعة هذا التكامل.

أستخدم جهاز Amazon حقيقيًا لأغراض الاختبار. أعتقد أنه إذا قمت بتثبيت Amazon Appstore على جهاز بخلاف Amazon ، فيجب أن يفعل ذلك.
سأقوم بإنشاء بعض الوثائق في وقت لاحق اليوم للبدء. أنا سعيد لأن هناك اهتمامًا بذلك.

فيما يلي دليل حول كيفية إضافة دعم Amazon IAP إلى التطبيق الحالي:
https://github.com/nochkin/react-native-iap/blob/amazon-iap/README_AMAZON.md
اسمحوا لي أن أعرف إذا كان هناك شيء يحتاج إلى توضيح إضافي.

لمعلوماتك،
لقد قمت بدفع بعض التغييرات الإضافية على مفترقتي الليلة الماضية ، وأطلقت تطبيقي أيضًا للإنتاج باستخدامه.
تبدو جيدة حتى الآن.
سأكون مهتمًا بالحصول على تعليقات من الآخرين في حالة وجود أي حاجة لأي وظائف إضافية أو حالات استخدام غير مغطاة في تطبيقي الخاص.

hyochan هل هناك أي خطة لإضافة هذا إلى الإصدار؟

تضمين التغريدة
يمكنك استخدام شوكة بلدي للاختبار وردود الفعل:
https://github.com/nochkin/react-native-iap/tree/amazon-iap
أنا متأكد من أن حالات الاستخدام الخاصة بك مختلفة عن حالات الاستخدام الخاصة بي ، لذلك يمكنك تقديم ملاحظات إضافية لإجراء المزيد من التغييرات عليها.

nochkin هل يشتمل مفترقك على دعم عمليات الشراء داخل التطبيق من أمازون؟

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

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

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

لطيف. ما زلت في طور تنفيذ الاشتراكات لتطبيقي الخاص (المنطق الداخلي المتعلق بالتطبيق ، وليس rn-iap) ، لذا يُرجى إعلامي إذا كان هناك أي شيء.

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

هل لديك الكثير من المشتركين الجدد والمشتركين؟

نعم ، يحتوي التطبيق الذي أستخدم هذا من أجله على مئات الاشتراكات الجديدة كل شهر. أيضا أي تحديث يستخدم هذا سيكون بدقة QA'd قبل الإصدار.

لدينا أيضًا خيارات شهرية وسنوية. كما وصفت ، كلاهما تحت معرف واحد لـ Amazon. في حالتنا ، نقوم بتأكيد الاشتراك عبر Amazon API ، والذي يوفر لنا معلومات حول الفترة.

هذا يبدو رائعا. أنا سعيد لأن شوكة بلدي ستخضع للاختبار المناسب في سيناريو مختلف.

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

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

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

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

لم أبدأ بالفعل في تنفيذ هذه الشوكة حتى الآن في مشروعي. من المرجح أن تفعل ذلك الشهر المقبل.

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

@ kostiantyn-solianyk
قام تطبيقي الخاص حاليًا بتطبيق Google Play و App Store فقط ، ولم أقم بتطبيق Amazon RVS للاشتراكات حتى الآن.
أقوم بالتحقق المنتظم من عمليات الشراء داخل التطبيق لـ Amazon وكان ذلك سهلاً بما يكفي للتنفيذ ، لذا أفترض أن الاشتراكات يجب أن تكون متشابهة إلى حد ما.

نعم في وضع الاختبار ، كل شيء على ما يرام معه ، ومعك أيضًا مفترقًا في الواقع ، يعمل حسب الحاجة (في الحالات التي راجعتها).

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

سأرى ما إذا كان بإمكاني إعادة ترتيب أولويات المهام الخاصة بي حتى أتمكن من اللعب مع عمليات التحقق من Amazon على اشتراكاتهم.
أفترض أن لديك مشكلة في استخدام خادم الاختبار أيضًا ، أليس كذلك؟

nochkin بالمناسبة ، لاحظت أن الأساليب getAvailablePurchases و getPurchaseHistory ترجع أخطاء. أعتقد أن هذين الشخصين لم يتم تنفيذهما بعد من أجل amazon IAP في you fork؟

أنت محق. نموذج تطبيقي الخاص لا يستخدم هؤلاء.
سألقي نظرة. شكرا لك.

على غرار @ kostiantyn-solianyk ، وجدت أن الأساليب التالية تحتاج إلى أن يتم تنفيذها في أمازون:

تم استدعاء RNIapAmazonModule.endConnection() بواسطة RNIap.endConnection()

أعتقد أن هذا يحتاج فقط إلى حل الوعد. يتطلب أيضًا إجراء تغييرات على index.ts ، أو لا يتم استخدامه مطلقًا.

تم استدعاء RNIapAmazonModule.refreshItems() بواسطة RNIap.consumeAllItemsAndroid()

لا يستخدم تطبيقي consumeAllItemsAndroid ، لذلك لم أفكر في ما يجب القيام به.

RNIapAmazonModule.getPurchaseHistoryByType() بواسطة RNIap.getPurchaseHistory()

لا يستخدم تطبيقي getPurchaseHistory ، لذلك لم أفكر في ما يجب القيام به.

RNIapAmazonModule.getAvailableItemsByType() بواسطة RNIap.getAvailablePurchases()

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

بخلاف ذلك ، فإن الاختبار حتى الآن يسير على ما يرام. شكرا على هذا nochkin !

nochkin ، هل ستكون قادرًا على وصف كيفية تثبيت هذه الشوكة في مشروع التطبيق الخاص بك؟

عندما أفعل شيئًا كهذا:

"react-native-iap": "github:nochkin/react-native-iap.git#amazon-iap"

لم يتم حل الوحدة النمطية لأنها تتوقع وجود js المبني من الكتابة المطبوعة ، ولكن الإصدار المبني من المشروع غير موجود على github. يتم إنشاؤه فقط لحزمة إصدار الوحدة. في الواقع ، التثبيت باستخدام npm والسطر أعلاه ، لا يقوم حتى بتنزيل index.ts ، بسبب ملف npmignore ، على ما أعتقد.

هل لهذا معنى؟

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

لقد قمت بالتثبيت محليًا ، شيء من هذا القبيل:
"react-native-iap": "../react-native-iap"
أثناء وجود دليل "رد فعل - أصلي - iap" يكون ببساطة نسخة من الريبو الخاص بي.

لا قلق!

حسنًا ، نعم ، اعتقدت أن مرجع الملف المحلي سيعمل ، لكنه لا يجعل المشروع قابلاً للنقل بسهولة.

الحل البديل الذي أستخدمه الآن للإشارة إلى الشوكة / الفرع الخاص بي هو تحديد التبعية مثل هذا:

"react-native-iap": "github:curiousdustin/react-native-iap.git#curious-amazon-iap-ts"

وفي فرعي ، قمت بتغيير خاصية main في react-native-iap 's package.json إلى index.ts بدلاً من .js . لقد قمت أيضًا بإزالة الإدخالات المتعلقة بـ TypeScript في .npmignore .

أعتقد أن هذا يعمل في الوقت الحالي لأن إعداد RN الخاص بي يقوم تلقائيًا ببناء وحدات قائمة على TS ...

قطعة مهمة أخرى تبدو مفقودة هي معالجة الأخطاء.

لا يقوم تطبيق Amazon مطلقًا بتشغيل أي رمز لإصدار أحداث خطأ ، مثل هذا من إصدار Google:

sendEvent(reactContext, "purchase-error", error);

هذا يعني أنه لن يتم استدعاء purchaseErrorListener أبدًا.

وأشار. نقطة جيدة. شكرا.

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

صدم!

سيكون من الرائع الحصول على دعم أمازون في هذا البرنامج المساعد أيضًا. لقد كنت أستخدم تطبيق أمازون الذي أجرته nochkin لاشتراكات التجديد التلقائي والشيء موثوق به تمامًا. سيكون من الرائع دمج هذه الشوكة في الريبو والحصول على قاعدة أكبر من المساهمين الذين يحافظون على التنفيذ!

هل ستكون هناك أي أخبار عن هذا لاحقًا أم سيتم إسقاط الفكرة؟

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

نعم ، أنا أفهم الموقف ، سأراقب ذلك بعد ذلك!

شكرا على الرد وآمل أن تحصل على بعض الوقت الإضافي لذلك

لقد دفعت العلاقات العامة (# 1134) بناءً على عملك الرائعnochkincuriousdustin ! 👏
تم إجراء الاختبارات ، وعمل رائع من جانبنا! سنضيف دعم أمازون على رد فعل-أصلي- iaphub عندما يتم دمج العلاقات العامة.
إنه عملي ولكن مثل nochkin قال إنه لا يزال هناك بعض التحسينات التي يمكننا القيام بها في المستقبل.

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

تم الحل وهو الآن جزء من الإصدار 5.0.0:
https://github.com/dooboolab/react-native-iap/releases/tag/5.0.0

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