React-native-iap: Tambahkan dukungan untuk Amazon Appstore IAP

Dibuat pada 26 Feb 2020  ·  35Komentar  ·  Sumber: dooboolab/react-native-iap

Saya pikir akan menyenangkan memiliki dukungan untuk Amazon Appstore IAP API .

🎯 feature 📢 announcement 🚶🏻 stale

Komentar yang paling membantu

Saya melihat ada pekerjaan di masa lalu untuk mendukungnya, tetapi tampaknya sudah usang dan tidak dapat digunakan dengan perpustakaan react-native-iap saat ini:
https://github.com/dooboolab/react-native-iap/issues/370
Jadi saya memulai garpu saya sendiri di https://github.com/nochkin/react-native-iap/tree/amazon-iap

Tampaknya berfungsi di lingkungan dev saya sendiri. Tetapi sebelum saya membuat PR untuk itu, akan menyenangkan untuk mendapatkan beberapa penguji alfa/beta nyata untuk meninjau kasus tepi tertentu dan memolesnya dengan benar karena sangat mungkin saya tidak menggunakan semua fungsi di aplikasi saya sendiri.

Saya mencoba untuk tetap berada dalam API react-native-iap asli mungkin. Ada beberapa metode yang belum saya lakukan (saya dapat menambahkannya jika seseorang memiliki cara untuk menguji dengan benar).

Salah satu keputusan desain yang melanggar di garpu saya adalah bagaimana mendeteksi Google vs Amazon. Saya pikir mendeteksi model/make perangkat bukanlah pendekatan yang baik karena pengguna dapat menginstal Google Play di Kindle dan mendapatkan aplikasi melalui Google (dan sebaliknya ketika Anda dapat menginstal Amazon Appstore di perangkat berbasis Play). Kita harus menyelesaikan IAP melalui API koresponden dalam kasus ini.
Garpu saya memeriksa sumber instalasi dan bertindak sesuai dengan itu. Di lingkungan dev, sumber instalasi tidak ada, sehingga Anda dapat mengatur fallback untuk dapat mengujinya dengan benar.
Saya akan mendokumentasikan ini jika ada minat pada garpu saya untuk digabungkan ke dalam repo hulu.

Semua 35 komentar

Saya melihat ada pekerjaan di masa lalu untuk mendukungnya, tetapi tampaknya sudah usang dan tidak dapat digunakan dengan perpustakaan react-native-iap saat ini:
https://github.com/dooboolab/react-native-iap/issues/370
Jadi saya memulai garpu saya sendiri di https://github.com/nochkin/react-native-iap/tree/amazon-iap

Tampaknya berfungsi di lingkungan dev saya sendiri. Tetapi sebelum saya membuat PR untuk itu, akan menyenangkan untuk mendapatkan beberapa penguji alfa/beta nyata untuk meninjau kasus tepi tertentu dan memolesnya dengan benar karena sangat mungkin saya tidak menggunakan semua fungsi di aplikasi saya sendiri.

Saya mencoba untuk tetap berada dalam API react-native-iap asli mungkin. Ada beberapa metode yang belum saya lakukan (saya dapat menambahkannya jika seseorang memiliki cara untuk menguji dengan benar).

Salah satu keputusan desain yang melanggar di garpu saya adalah bagaimana mendeteksi Google vs Amazon. Saya pikir mendeteksi model/make perangkat bukanlah pendekatan yang baik karena pengguna dapat menginstal Google Play di Kindle dan mendapatkan aplikasi melalui Google (dan sebaliknya ketika Anda dapat menginstal Amazon Appstore di perangkat berbasis Play). Kita harus menyelesaikan IAP melalui API koresponden dalam kasus ini.
Garpu saya memeriksa sumber instalasi dan bertindak sesuai dengan itu. Di lingkungan dev, sumber instalasi tidak ada, sehingga Anda dapat mengatur fallback untuk dapat mengujinya dengan benar.
Saya akan mendokumentasikan ini jika ada minat pada garpu saya untuk digabungkan ke dalam repo hulu.

@nochkin Kedengarannya sangat bagus. Saya ingin tahu langkah untuk menguji ini. Saya tidak punya perangkat amazon . Apakah saya masih bisa mengujinya? Harap Anda dapat membawa beberapa dokumen bagi mereka yang tertarik untuk menindaklanjuti integrasi ini.

Saya menggunakan perangkat Amazon asli untuk tujuan pengujian. Saya kira jika Anda menginstal Amazon Appstore pada perangkat non-Amazon, itu harus dilakukan.
Saya akan membuat beberapa dokumentasi hari ini untuk memulai. Saya senang ada minat untuk itu.

Berikut adalah panduan tentang cara menambahkan dukungan Amazon IAP ke aplikasi yang ada:
https://github.com/nochkin/react-native-iap/blob/amazon-iap/README_AMAZON.md
Beri tahu saya jika ada yang perlu klarifikasi tambahan.

untuk diketahui,
Saya mendorong beberapa perubahan lagi pada garpu saya tadi malam, dan juga merilis aplikasi saya ke produksi menggunakannya.
Terlihat bagus sejauh ini.
Saya akan tertarik untuk mendapatkan umpan balik dari orang lain jika ada kebutuhan untuk fungsionalitas tambahan atau kasus penggunaan yang tidak tercakup dalam aplikasi saya sendiri.

@hyochan Apakah ada rencana untuk menambahkan ini ke rilis?

@curiousdustin ,
Anda dapat menggunakan garpu saya untuk menguji dan umpan balik:
https://github.com/nochkin/react-native-iap/tree/amazon-iap
Saya yakin kasus penggunaan Anda berbeda dari kasus saya, jadi Anda dapat memberikan umpan balik tambahan untuk mendapatkan lebih banyak perubahan.

@nochkin apakah garpu Anda menyertakan dukungan untuk IAP berlangganan amazon?

@curiousdustin ,
Meskipun sudah lama sejak implementasi, tapi saya percaya begitu. Saya hanya belum mengujinya dengan langganan.
Anda masih perlu menerapkan verifikasi di sisi server karena saya tidak pernah memvalidasi apa pun di klien.

Amazon tidak menghasilkan banyak lalu lintas, jadi pengujian saya di kehidupan nyata agak lambat. Jika Anda dapat berkontribusi dalam aspek ini, itu akan menyenangkan.

Ok, saya mungkin akan menguji ini. Saat ini saya menggunakan garpu saya sendiri dalam produksi, tetapi ini dari sebelum perubahan terkait siklus hidup utama. Saya benar-benar ingin memanfaatkan semua pembaruan hebat sejak saat itu.

Bagus. Saya masih dalam proses menerapkan langganan untuk aplikasi saya sendiri (logika terkait aplikasi internal, bukan rn-iap), jadi beri tahu saya jika ada.

API langganan Amazon agak aneh saat ditanyai. Misalnya, saya memiliki langganan bulanan dan tahunan untuk layanan yang sama, tetapi Amazon melaporkannya secara identik. Satu-satunya perbedaan adalah harganya, jadi saya pikir saya akan mencari tahu mana yang berdasarkan harga saja.

Apakah Anda memiliki banyak pengguna berlangganan dan berlangganan baru?

Ya, aplikasi yang saya gunakan ini memiliki ratusan langganan baru setiap bulannya. Juga setiap pembaruan yang menggunakan ini akan diperiksa secara menyeluruh sebelum dirilis.

Kami juga memiliki opsi bulanan dan tahunan. Seperti yang Anda jelaskan, keduanya berada di bawah satu ID untuk Amazon. Dalam kasus kami, kami mengonfirmasi langganan melalui API Amazon, yang memberi kami informasi tentang periode tersebut.

Ini terdengar bagus. Saya senang garpu saya akan memiliki pengujian yang tepat dalam skenario yang berbeda.

Saya perlu menunjukkan periode berlangganan di UI untuk dipilih pengguna.
Aneh bahwa Konsol Pengembang Amazon memiliki bidang-bidang tersebut sebagaimana diperlukan, tetapi API tidak memiliki akses ke bidang tersebut.

Ini mungkin telah berubah, tetapi kami menemukan bahwa meskipun Anda menyajikan 2 opsi untuk yang digunakan, setelah mereka memulai alur pembelian, Amazon akan menampilkan opsi periode dengan yang pertama dipilih sebelumnya. Jadi, kami harus menerapkan UI baru untuk amazon, di mana pengguna tidak benar-benar memilih periode, sampai mereka berada di UI alur pembelian Amazon.

Ide yang menarik sebenarnya. UI saya tidak akan cocok dengan model ini, tetapi saya dapat mempertimbangkan opsi ini jika saya memutuskan untuk mengubahnya. Saya mungkin masih bisa menggunakannya. Terima kasih.

@curiousdustin @nochkin
Hai, seperti yang saya pahami, Anda melakukan banyak hal untuk masalah ini, wow! Saya juga sedang dalam proses menerapkan langganan. Bagaimana Anda tahu bahwa langganan telah diperbarui? Dan apakah Anda perlu memperbaruinya di server? Bagaimana cara kerjanya dengan RVS, maksud saya tanda terima amazon tidak memiliki tanggal akhir berlangganan, jadi, bagaimana cara memperbarui langganan khusus untuk pengguna di server. Akan senang mendengar dari Anda jika Anda tahu sesuatu tentang semua hal ini)

Saya belum benar-benar mulai menerapkan garpu ini di proyek saya. Kemungkinan akan melakukan itu bulan depan.

Maaf, saya tidak punya banyak info tentang cara kerja sisi server Amazon. Orang yang berbeda di tim saya menangani backend. Saya tahu bahwa saat ini kami hanya menyerahkan ID produk dan ID tanda terima ke server kami dan menangani segala sesuatu yang lain sejauh memverifikasi dan memperbarui validitas berlangganan yang diperlukan.

@kostiantyn-solianyk
Aplikasi saya sendiri saat ini hanya menerapkan Google Play dan App Store, saya belum melakukan Amazon RVS untuk langganan.
Saya melakukan verifikasi pembelian dalam aplikasi reguler untuk Amazon dan itu cukup mudah untuk diterapkan, jadi saya akan menganggap langganan harus serupa.

ya dalam mode uji semuanya baik-baik saja dengan itu, dan dengan garpu Anda sebenarnya juga, berfungsi sesuai kebutuhan (dalam kasus yang saya periksa).

Kami terjebak pada masalah memperbarui langganan karena tanda terima amazon tidak memiliki tanggal akhir berlangganan, dan itu sebenarnya aneh.

Saya akan melihat apakah saya dapat memprioritaskan ulang tugas saya sehingga saya dapat bermain dengan verifikasi Amazon pada langganan mereka.
Saya berasumsi Anda memiliki masalah menggunakan server pengujian mereka juga, bukan?

@nochkin Omong-omong, saya perhatikan bahwa metode getAvailablePurchases dan getPurchaseHistory mengembalikan kesalahan. Saya pikir 2 ini belum diterapkan untuk amazon IAP di fork Anda?

Kamu benar. Model aplikasi saya sendiri tidak menggunakan itu.
Aku akan melihatnya. Terima kasih.

Mirip dengan @kostiantyn-solianyk , saya menemukan bahwa metode berikut perlu diterapkan untuk Amazon:

RNIapAmazonModule.endConnection() dipanggil oleh RNIap.endConnection()

Saya pikir ini hanya perlu menyelesaikan janji. Itu juga membutuhkan perubahan pada index.ts , atau tidak pernah digunakan.

RNIapAmazonModule.refreshItems() dipanggil oleh RNIap.consumeAllItemsAndroid()

Aplikasi saya tidak menggunakan consumeAllItemsAndroid , jadi saya belum melihat apa yang perlu dilakukan.

RNIapAmazonModule.getPurchaseHistoryByType() dipanggil oleh RNIap.getPurchaseHistory()

Aplikasi saya tidak menggunakan getPurchaseHistory , jadi saya belum melihat apa yang perlu dilakukan.

RNIapAmazonModule.getAvailableItemsByType() dipanggil oleh RNIap.getAvailablePurchases()

Ini diperlukan untuk menyediakan alur _Pulihkan Pembelian_ di aplikasi Anda. Saya berhasil, tetapi apa yang saya rasakan agak kacau. Saya akan memposting solusinya di sini jika saya membersihkannya sedikit.

Selain itu, pengujian sejauh ini berjalan dengan baik. Terima kasih untuk @nochkin ini!

@nochkin , Bisakah Anda menjelaskan bagaimana Anda menginstal garpu ini di proyek aplikasi Anda?

Ketika saya melakukan sesuatu seperti ini:

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

Modul tidak menyelesaikan karena mengharapkan js yang dibangun dari TypeScript ada di sana, tetapi versi proyek yang dibangun tidak ada di github. Itu hanya dibuat untuk paket rilis modul. Bahkan menginstal dengan npm dan baris di atas, itu bahkan tidak mengunduh index.ts, karena file .npmignore, saya pikir.

Apakah ini masuk akal?

Terima kasih banyak atas ringkasan tentang implementasi metode yang hilang. Saya tidak mengimplementasikan "endConnection" karena tidak diperlukan, tetapi saya setuju itu perlu memiliki metode untuk tujuan kompatibilitas.
Aku akan melihat ke orang lain. Maaf, butuh beberapa waktu, tetapi semuanya sudah beres sekarang dan saya berharap untuk segera memeriksa/menerapkannya.

Saya menginstal secara lokal, seperti ini:
"react-native-iap": "../react-native-iap"
Saat memiliki direktori "react-native-iap" cukup menjadi tiruan dari repo saya.

Jangan khawatir!

Oke, ya, saya pikir referensi file lokal akan berfungsi, tetapi tidak membuat proyek ini sangat portabel.

Solusi yang saya gunakan sekarang untuk mereferensikan garpu/cabang saya sendiri adalah dengan mendefinisikan ketergantungan seperti ini:

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

Dan di cabang saya, saya telah mengubah properti main di react-native-iap 's package.json menjadi index.ts alih-alih .js . Saya juga menghapus entri terkait TypeScript di .npmignore .

Ini berfungsi untuk saat ini, saya kira karena pengaturan RN saya secara otomatis membangun modul berbasis TS ...

Bagian penting lainnya yang tampaknya hilang adalah penanganan kesalahan.

Implementasi Amazon tidak pernah menjalankan kode apa pun untuk memancarkan peristiwa kesalahan, seperti ini dari versi Google:

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

Ini berarti bahwa purchaseErrorListener tidak akan pernah dipanggil.

Dicatat. Poin bagus. Terima kasih.

Hai, sepertinya tidak ada aktivitas tentang masalah ini baru-baru ini. Apakah masalah sudah diperbaiki, atau masih membutuhkan perhatian masyarakat? Masalah ini dapat ditutup jika tidak ada aktivitas lebih lanjut yang terjadi. Anda juga dapat memberi label masalah ini sebagai "Untuk Diskusi" atau "Masalah pertama yang bagus" dan saya akan membiarkannya terbuka. Terima kasih atas kontribusi Anda.

Menabrak!

Akan sangat bagus untuk memiliki dukungan amazon di plugin ini juga. Saya telah menggunakan implementasi amazon yang dibuat oleh @nochkin untuk langganan pembaruan otomatis dan masalahnya cukup andal. Akan luar biasa untuk mengintegrasikan garpu ini dalam repo dan memiliki basis kontributor yang lebih besar yang mempertahankan implementasinya!

Apakah akan ada berita tentang ini nanti atau idenya akan dibatalkan?

Saya tidak berpikir itu akan dijatuhkan. Saya percaya titik kemacetan utama adalah beberapa fitur yang hilang (kecil untuk kasus penggunaan saya, tapi mungkin besar untuk orang lain). Aplikasi saya sendiri juga senang dengan keadaan saat ini.
Potongan-potongan teka-teki yang tersisa itu masih ada di radar saya dan saya mulai mengerjakannya. Sayangnya, penyelesaian/pengujian memakan waktu lebih lama dari yang diharapkan karena prioritas lain.

Ya, saya mengerti situasinya, saya akan mengawasi ini kalau begitu!

Terima kasih atas jawabannya dan saya harap Anda mendapatkan sedikit waktu tambahan untuk itu

Saya mendorong PR (#1134 ) berdasarkan karya hebat Anda @nochkin @curiousdustin ! 👏.
Tes selesai, bekerja dengan baik di pihak kami! Kami akan menambahkan dukungan Amazon pada react-native-iaphub ketika PR akan digabungkan.
Ini fungsional tetapi seperti yang dikatakan @nochkin , masih ada beberapa perbaikan yang bisa kami lakukan di masa depan.

Hai, sepertinya tidak ada aktivitas tentang masalah ini baru-baru ini. Apakah masalah sudah diperbaiki, atau masih membutuhkan perhatian masyarakat? Masalah ini dapat ditutup jika tidak ada aktivitas lebih lanjut yang terjadi. Anda juga dapat memberi label masalah ini sebagai "Untuk Diskusi" atau "Masalah pertama yang bagus" dan saya akan membiarkannya terbuka. Terima kasih atas kontribusi Anda.

Terselesaikan dan sekarang bagian dari rilis 5.0.0:
https://github.com/dooboolab/react-native-iap/releases/tag/5.0.0

Apakah halaman ini membantu?
0 / 5 - 0 peringkat