React-native-iap: [Android] getProducts selalu mengembalikan larik kosong

Dibuat pada 25 Apr 2018  ·  19Komentar  ·  Sumber: dooboolab/react-native-iap

Versi react-native-IAP

0.3.15

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

Android

Perilaku yang diharapkan

Dapatkan Semua produk

Perilaku sebenarnya

Semua berfungsi dengan baik di iOS tetapi getProducts selalu mengembalikan larik kosong di android.
Saya pikir ini adalah masalah konfigurasi namun saya mengikuti setiap langkah ...

Unggah APK dengan izin penagihan / penyiapan akun pedagang / Buat pembelian dalam aplikasi ...

🙏 help wanted

Komentar yang paling membantu

@vadermemo @martinberbesson Hai ~ Bisakah Anda membagikan kode js Anda untuk itemSkus ? Apakah Anda menyiapkan kode seperti di bawah ini?

export const PURCHASE_ITEMS = Platform.select({
  ios: [
    'productid_1',
    'productid_2',
  ],
  android: [
    'productid_1',
    'productid_2',
  ],
});

Selain itu, pengujian aplikasi draf tidak lagi didukung. Pleaser mengacu pada panduan . Pastikan untuk mempublikasikan aplikasi Anda ke saluran alfa atau beta.

Semua 19 komentar

Masalah yang sama di sini

Cuplikan saya:

  RNIap.prepare().then(responsePrepare => {
    console.log("=============>responsePrepare:" + responsePrepare);
    RNIap.getProducts(itemSkus).then(response => {
        this.setState({ items  : response});
        console.log("=============>response:" + JSON.stringify(response));
    });
  });

Tanggapan saya di adb.logcat (Android)

208 28473 28524 I ReactNativeJS: Menjalankan aplikasi "testingIap" dengan appParams: {"rootTag": 11}. __DEV__ === benar, peringatan tingkat pengembangan AKTIF, pengoptimalan kinerja MATI
04-25 17: 04: 04.228 1140 1150 I AccountManagerService: getTypesVisibleToCaller: isPermitted? benar
04-25 17: 04: 04.230 1140 2059 I AccountManagerService: getTypesVisibleToCaller: isPermitted? benar
04-25 17: 04: 04.232 24842 24933 I Finsky: [4061] com.google.android.finsky.billing.iab.ab.b (46): com.projectbundle: Akun dari akun pertama - [uuAJBL1tLX2MAj69S-olEslXXXX]
04-25 17: 04: 04.233 28473 28473 D RNIapModule: klien penagihan siap
04-25 17: 04: 04.303 28473 28524 I ReactNativeJS: =============> responsePrepare: null
04-25 17: 04: 04.308 28473 28524 I ReactNativeJS: =============> responsePrepare: null
04-25 17: 04: 04.328 1140 2107 I AccountManagerService: getTypesVisibleToCaller: isPermitted? benar
04-25 17: 04: 04.330 1140 1896 I AccountManagerService: getTypesVisibleToCaller: isPermitted? benar
04-25 17: 04: 04.339 1140 2095 Saya AccountManagerService: getTypesVisibleToCaller: isPermitted? benar
04-25 17: 04: 04.340 1140 1679 I AccountManagerService: getTypesVisibleToCaller: isPermitted? benar
04-25 17: 04: 04.343 24842 24854 I Finsky: [4020] com.google.android.finsky.billing.iab.ab.b (46): com.projectbundle: Akun dari akun pertama - [uuAJBL1tLX2MAj69S-olEslXXXX]
04-25 17: 04: 04.347 24842 24853 I Finsky: [4019] com.google.android.finsky.billing.iab.ab.b (46): com.projectbundle: Akun dari akun pertama - [uuAJBL1tLX2MAj69S-olEslXXXX]
04-25 17: 04: 04.626 28473 28525 D RNIapModule: responseCode: 0
04-25 17: 04: 04.628 28473 28525 D RNIapModule: responseCode: 0
04-25 17: 04: 04.669 28473 28524 I ReactNativeJS: =============> tanggapan: []
04-25 17: 04: 04.693 28473 28524 I ReactNativeJS: =============> tanggapan: []

Tapi dengan iOS saya mendapatkan array dengan format data well.

PD1 Saya mendapatkan rekomendasi dari https://medium.com/@dooboolab/react -native-in-app-purchase-121622d26b67

PD2 "Bantu aku Obi Wan Kenobi kaulah satu-satunya harapanku"

Cuplikan package.json:
"ketergantungan": {
"bereaksi": "16.3.1",
"react-native": "0.55.3",
"react-native-iap": "^ 0.3.18"
},

@vadermemo @martinberbesson Hai ~ Bisakah Anda membagikan kode js Anda untuk itemSkus ? Apakah Anda menyiapkan kode seperti di bawah ini?

export const PURCHASE_ITEMS = Platform.select({
  ios: [
    'productid_1',
    'productid_2',
  ],
  android: [
    'productid_1',
    'productid_2',
  ],
});

Selain itu, pengujian aplikasi draf tidak lagi didukung. Pleaser mengacu pada panduan . Pastikan untuk mempublikasikan aplikasi Anda ke saluran alfa atau beta.

Hai @dooboolab

Ini data saya
const itemSkus = Platform.select ({
ios: [
'com.iap.cart',
'com.iap.doublecoin'
],
android: [
'dua kali lipat',
'cart_1500'
],
});

salam Hormat

PD1 Aplikasi saya dalam versi alfa, bahkan tidak mendapatkan produknya.
PD2 Dengan npm lain, seperti react-native-billing saya bisa mendapatkan produk :(

@vadermemo awan ini sangat buruk bagiku .. maaf untuk itu. Ini berfungsi dengan baik di lingkungan saya. Saya akan men-debug lebih banyak besok dan pasti akan kembali besok! Juga dapatkah Anda mencoba menangkap pernyataan itu dan melihat apa yang muncul di sana?

Saya rasa saya perlu memiliki rilis alfa ... Mengunggah apk dengan izin penagihan saja tidak cukup

@dooboolab Nah, jika ada bantuan untuk Anda, mungkin poin berikutnya:

ketika saya meletakkan konfigurasi pada react-native-billing saya memasukkan file sumber daya "string.xml" parameter string name = "RNB_GOOGLE_PLAY_LICENSE_KEY"
tetapi di react-native-iap saya tidak bisa melihat parameter ini beraksi.

Coba-tangkap yang Anda butuhkan melempar log berikutnya:

  1. Ubah itemSkus saya

const itemSkus = Platform.select ({
ios: [
'predictorcart_1500',
],
android: [
'predictorcart_1500',
'android.test.purchased',
'android.test.canceled',
'android.test.refunded',
'android.test.item_unavailable',
],
});

  1. ubah di componentDidMount

    async componentDidMount () {
    coba {
    menunggu RNIap.prepare ();
    menunggu this.getItems ();

    }
    tangkap (err) {
    console.warn (err.code, err.message);
    }
    }

  2. Ubah data get

    getProductDetails = async () => {
    coba {
    produk const = menunggu RNIap.getProducts (itemSkus);
    console.log ('=======> Products ::::', products);
    this.setState ({productDetails: products});
    } tangkap (err) {
    console.warn (err.code, err.message);
    }
    }

  3. Letakkan sebuah tombol
    \

  4. Letakkan aplikasi di perangkat
    react-native run-android --variant = release

6. Akhirnya lognya adalah yang berikutnya:
04-26 12: 53: 11.335 16749 16759 I Finsky: [11707] com.google.android.finsky.billing.iab.ab.b (46): com.projectbundle: Akun dari akun pertama - [uuAJBL1tLX2MAj69S-olEl331212]
04-26 12: 53: 11.401 226 1177 V audio_hw_primary: do_output_standby in
04-26 12: 53: 11.409 20362 20432 D RNIapModule: responseCode: 0
04-26 12: 53: 11.426 226 1177 W audio_hw_primary: do_output_standby.mode: 0
04-26 12: 53: 11.426 226 1177 V audio_hw_primary: do_output_standby in out
04-26 12: 53: 11.427 1140 2106 D PowerManagerService: releaseWakeLockInternal: lock = 87714678 [AudioMix], flags = 0x0, total_time = 3166ms
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: '=======> Products ::::', [{description: 'Descripción de muestra para el producto: android.test.canceled.',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: title: 'Título de muestra',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: localizedHarga: '$ 18.65',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: ketik: 'tidak',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: currency: 'MXN',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: harga: '18 .65 ',
04-26 12: 53: 11.444 20362 20431 Saya ReactNativeJS: productId: 'android.test.canceled'},
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: {description: 'Descripción de muestra para el producto: android.test.item_unavailable.',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: title: 'Título de muestra',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: localizedHarga: '$ 18.65',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: ketik: 'tidak',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: currency: 'MXN',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: harga: '18 .65 ',
04-26 12: 53: 11.444 20362 20431 Saya ReactNativeJS: productId: 'android.test.item_unavailable'},
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: {description: 'Descripción de muestra para el producto: android.test.purchased.',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: title: 'Título de muestra',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: localizedHarga: '$ 18.65',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: ketik: 'tidak',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: currency: 'MXN',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: harga: '18 .65 ',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: productId: 'android.test.purchased'},
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: {description: 'Descripción de muestra para el producto: android.test.refunded.',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: title: 'Título de muestra',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: localizedHarga: '$ 18.65',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: ketik: 'tidak',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: currency: 'MXN',
04-26 12: 53: 11.444 20362 20431 I ReactNativeJS: harga: '18 .65 ',
04-26 12: 53: 11.444 20362 20431 Saya ReactNativeJS: productId: 'android.test.refunded'}]

@martinberbesson Saya memiliki aplikasi pada rilis alfa, bahkan saya tidak bisa mendapatkan produknya. Menurut saya hal lain, mungkin konfigurasi di react-native-iap atau konsol google.

@martinberberbon @dooboolab Incredible !!

Saya membuat aplikasi lain dengan langkah yang sama dan aplikasi tersebut berfungsi di iOS dan Android !!. Saya tidak percaya itu.

Saya tidak tahu yang mana alasannya, tapi menurut saya adalah konfigurasi sesuatu pada kode atau konsol google.

PD Saya menunggu 5 jam untuk mendapatkan itemSkus yang benar.
PD2 Aplikasi lama tidak mendapatkan itemsSkus bahkan dengan 24 jam.
PD3 @dooboolab Sekarang sudah bisa tidur nyenyak. :)
PD4 Saya akan kembangkan proses pembeliannya, semoga mudah

Salam Hormat,

@vadermemo Senang berhasil. Juga, untuk modul IAP terbaru untuk android yaitu v3, Anda tidak perlu memasukkan apapun ke dalam string.xml .

Per # 124 Saya pikir ini masih terjadi - setidaknya untuk aplikasi yang ada, akan lebih baik jika ada solusi untuk ini juga.

Bagi siapa pun yang masih mengalami masalah ini, Anda harus terlebih dahulu membaca https://stackoverflow.com/a/35132936/1374827 dan memastikan Anda telah memenuhi semua persyaratan yang diuraikan dalam posting itu.

Jika semuanya baik-baik saja, periksa apakah Anda memanggil fungsi yang sesuai. Bagi saya, saya memiliki aplikasi di mana saya hanya menggunakan Berlangganan pembelian dalam aplikasi, tapi saya keliru menelepon RNIap.getProducts dan tentu saja mendapatkan kembali array kosong. Saya malah harus menelepon RNIap.getSubscriptions dan langganan dikembalikan.

Dengan nada yang sama, pastikan Anda menelepon RNIap.buySubscription jika Anda membeli langganan, dan RNIap.buyProduct jika Anda membeli produk.

Ok setelah bergulat dengan ini, masalah saya ternyata adalah pengalaman saya dengan android. Saya telah mengotak-atik nama paket di dev dan sementara itu berjalan dengan baik di perangkat, nama paket tidak diatur dengan sempurna adalah mengapa ia mengembalikan array kosong. Setelah mengikuti langkah-langkah dan ini itu semua terlihat baik.

Saya juga mendapatkan array kosong,
Dan saya bingung dengan https://developer.android.com/google/play/billing/billing_testing#draft_apps doc, bahwa saya memerlukan akun percobaan dan menambahkan penguji, jadi tolong siapa pun dapat membantu saya untuk ini.

Terima kasih!

sama

@bharatidudhjiya @tmjordan Jika kalian menghadapi masalah konfigurasi, saya ingin Anda mencoba project murni android iap terlebih dahulu dan melihat apakah berfungsi dengan benar. Itu juga akan membantu Anda lebih memahami tentang iap sdk android.

@hyochan terima kasih, itu ide yang bagus. saya akan melakukan itu

@tmjordan Ini sudah cukup tua tetapi ini mungkin membantu Anda penyiapan dasar.

terima kasih kawan @hyochan

Saya menyelesaikannya! Saya menggunakan versi ini,

react-native-iap: ^4.3.0
react-native: 0.60.5

lakukan saja seperti ini

const itemSkus = Platform.select({
    ios: [
        '100coins' // just remove bundle id from product id
    ],
    android: [
        '100coins' // just remove bundle id from product id
    ]
});

Pastikan Anda memiliki nama paket yang benar untuk aplikasi Anda.

dan jika Anda telah mengubahnya dari perintah react-native. itu tidak akan tetap bekerja.

Anda harus melakukannya secara manual dan kemudian membersihkan proyek menggunakan ./gradlew clean di folder android.

setelah itu cobalah.

Selamat Coding.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat