React-native-iap: beliBerlangganan mengabaikan umpan balik pengguna

Dibuat pada 6 Okt 2018  ·  32Komentar  ·  Sumber: dooboolab/react-native-iap

Versi reaksi-asli-iap

2.3.0

Platform yang Anda hadapi kesalahannya (IOS atau Android atau keduanya?)

Android

Perilaku yang diharapkan

let sub = menunggu RNIApp.buySubscription("beberapa");

harus menunggu pengguna menekan beli pada modal pembayaran dalam aplikasi

Perilaku sebenarnya

saya tidak dapat memeriksa apakah pengguna menerima langganan, karena ketika melakukan:

let sub = menunggu RNIApp.buySubscription("beberapa");
jika(sub){
melakukan beberapa hal..
}

blok if(sub) dieksekusi segera setelah popup terbuka, tetapi pengguna masih belum menerima langganan

Lingkungan yang diuji (Emulator? Perangkat Nyata?)

Perangkat nyata

Ada ide?

Ada metode lain seperti getAvailablePurchases yang juga mengembalikan janji dan berfungsi dengan baik

Masalahnya adalah buySubscription harus mengembalikan panggilan balik dari input pengguna dan itu bukan

⌚️ regression 📱 iOS

Komentar yang paling membantu

Kami sedang mengerjakan ini. Juga, siapa pun yang menghadapi ini, apakah Anda menelepon getSubscriptions sebelum benar-benar menelepon buySubscription ?

Semua 32 komentar

Saya menggunakan RN 57, juga, langganan selesai, saya dapat memeriksa di playstore bahwa pembeliannya baik-baik saja tetapi janji beliBerlangganan kembali tidak ditentukan

ada bantuan?

Yah, saya menurunkan versi ke 2.2.2 dan berfungsi .. jadi saya pikir kalian melewatkan sesuatu dalam rilis baru Anda

@marcosmartinez7 Maaf melanggar, bisakah Anda mencoba 2.3.1 ?

Hai, terima kasih!

Saya tidak punya waktu sekarang tapi saya akan

@ marcosmartinez7 Terima kasih, silakan kembali.

Masalah @dooboolab juga ada di iOS. Mencoba keduanya 2.3.1 serta 2.3.2 . Seperti yang disebutkan oleh @marcosmartinez7 2.2.2 berfungsi dengan baik

Saya pikir itu diperbaiki di 2.3.3 . Silakan buka kembali saat ini masih terjadi.

@dooboolab Maaf, baru saja menginstal dan menautkan ulang 2.3.5 . await RNIap.buySubscription(iapProductId) masih segera mengembalikan undefined di iOS

@Gaia-Nutrition Saya pikir masalah Anda berbeda karena kode ios tidak berubah. Bisakah Anda mencoba membatalkan tautan dan menautkan lagi?

@dooboolab Saya mencoba menautkan dan 2.2.2 itu mulai bekerja lagi. Tapi besok saya cek lagi. Mungkin saya akan mencoba menginstal komponen asli secara manual

@dooboolab Ok, saya sekarang secara manual menautkan versi 2.3.6 baru. Masih mendapatkan undefined . Saya ingin membantu menyelesaikan masalah ini. Beri tahu saya apa yang bisa saya lakukan untuk membantu!

Adakah yang bisa mengkonfirmasi ini? Ini seharusnya tidak terjadi terutama di ios.

@dooboolab Saya dapat mengonfirmasi bahwa pada iOS versi 2.3.6 tidak menjalankan janji tetapi versi 2.2.2 melakukannya (menggunakan perangkat iPhone 5, React Native 0.56)

Saya juga mengalami masalah ini pada 2.3.7. Ketika saya mencoba menggunakan await baris berikutnya segera dipanggil alih-alih menunggu janji, dan ketika saya menggunakan RNIap.buySubscription(subId).then(purchase => {}) itu macet dengan kesalahan tidak dapat membaca properti lalu tidak terdefinisi

Kami sedang mengerjakan ini. Juga, siapa pun yang menghadapi ini, apakah Anda menelepon getSubscriptions sebelum benar-benar menelepon buySubscription ?

Saya baru saja menguji pembelian di aplikasi RNExample. Saya membeli langganan dengan metode buyProductWithoutFinishTransaction().
Saya sarankan untuk menguji seperti RNExample. Dan perbarui Xcode, pengaturan build ke 'legacy'.. Saya kira proses build di Xcode mengubah pembaruan ini.
Dan gunakan penguji kotak pasir yang baru dibuat.

@JJMoon sangat menarik. Kombinasi buyProductWithoutFinishTransaction() dan finishTransaction() bekerja pada 2.3.7 sementara buySubscription() secara langsung masih gagal!

@Gaia-Nutrisi OK. Kemudian gunakan buyProductWithoutFinishTransaction dan finishTransaction alih-alih buySubscription . Tindakan pembeliannya persis sama.

@Gaia-Nutrition Bisakah Anda mencoba 2.3.8 ? Juga, apakah Anda menelepon getSubscriptions sebelum buySubscription ?

@dooboolab 2.3.8 masih gagal menggunakan buySubscription dan lagi: Ya, saya menelepon getSubscriptions sebelumnya. Saya tidak berpikir buyProductWithoutFinishTransaction() akan bekerja sebaliknya.

Saya menguji buySubscription di perangkat iOS dalam mode kotak pasir.
Itu berhasil berhasil, tetapi itu menunjukkan beberapa pesan kesalahan.
Dan langganan yang dapat diperpanjang otomatis tidak mengeluarkan tanda terima.
Saya menyarankan untuk menggunakan buyProductWithoutFinishTransaction dan finishTransaction daripada buySubscription.
Saat ini saya tidak memiliki perangkat untuk pengujian, saya akan melacak masalah ini nanti.

Terasa seperti ini hanya masalah di iOS saat ini. Apakah saya benar?

@dooboolab Tidak, juga terjadi di Android. Fungsi mengembalikan tidak terdefinisi bahkan sebelum baris pertama di buyItemByType dipanggil.

@dooboolab Masalahnya disebabkan di index.js:105. Anda harus mengubah baris menjadi sesuatu seperti

export const buySubscription = (sku, oldSku, prorationMode) => Platform.select({ ios: () => RNIapIos.buyProduct(sku), android: () => RNIapModule.buyItemByType(ANDROID_ITEM_TYPE_SUBSCRIPTION, sku, oldSku, -1), })();
(Saya tahu ini mengabaikan prorationMode)

Namun setelah berhasil berlangganan ada masalah:

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 Anda menggunakan react-native-iap versi mana? Ada baris kosong di RNIapModule.java:427 . Silakan coba lagi untuk yang terbaru.

Kesalahan saya: Saya mengedit beberapa baris. Tetapi perbaikan untuk masalah utama adalah mengedit fungsi beli Berlangganan ke

`
export const buySubscription = (sku, oldSku, prorationMode) =>
Platform.pilih({
ios: () => RNIapIos.buyProduct(sku),
android: () => {
if (!prorationMode) prorationMode = -1;
kembalikan RNIapModule.buyItemByType(ANDROID_ITEM_TYPE_SUBSCRIPTION, sku, oldSku, prorationMode);
},
})();

`

Ada beberapa tanda kurung yang tidak perlu.

@mfentross saya buruk. Saya melewatkan pernyataan return . Saya baru saja memublikasikan ke 2.3.11 . Jadi sekarang android berfungsi?

@dooboolab Terima kasih, ini berfungsi sekarang 👍

@mfentross @JJMoon Oke! Jadi kami hanya memiliki masalah iOS yang tersisa.

@JJMoon Dia mengatakan jika metode bungkus dengan async dan await , itu berhasil. Namun, saya tidak yakin bagaimana ini bisa terjadi. Membungkus dengan async dan await berlebihan dalam nilai pengembalian bukan?

Saya telah memublikasikan ke 2.3.13 . Semoga Anda semua mencoba ini.

Silakan buka kembali saat ini masih terjadi. Terima kasih atas semua bantuan.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat