React-native-iap: RNIap.requestPurchase tidak merespons di iOS

Dibuat pada 13 Mei 2020  ·  11Komentar  ·  Sumber: dooboolab/react-native-iap

Versi reaksi-asli-iap

4.4.8

Versi reaksi-asli

0.61.5

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

iOS

Perilaku yang diharapkan

await RNIap.requestPurchase(sku, false)
console.log('REQUEST OVER') 

REQUEST OVER untuk dicetak.

Perilaku sebenarnya

Di perangkat saya menggunakan akun penguji kotak pasir, itu merespons dan bekerja dengan baik. Tetapi dengan perangkat atau simulator lain, itu tidak merespons atau menyelesaikan. Ini penting karena selama peninjauan aplikasi, Apple terus menolak aplikasi saya dengan alasan mengetuk BELI tidak merespons.

Tidak ada masalah tentang RNIap.getProducts(itemSkus)

Lingkungan yang diuji (Emulator? Perangkat Nyata?)

Perangkat dan Simulator Nyata

Langkah-langkah untuk mereproduksi perilaku

 async componentDidMount() {
    RNIap.getProducts(itemSkus)
      .then((products) => {
        this.setState({ products: products })
      })
      .catch((error) => {
        console.log(error.message)
      })
  }
requestPurchase = async (sku) => {
    try {
      await RNIap.requestPurchase(sku, false)
      console.log('REQUESTED OVER')
    } catch (err) {
      console.warn(err.code, err.message)
    }
}

render() {
 const { products } = this.state
 return (
  <View>
    {products.map((p, i) => { return (
       <TouchableWithoutFeedback onPress={() => this.requestPurchase(p.productId)}>
          <Text> BUY </Text>
       </TouchableWithoutFeedback> ) })}
 </View>)
🚶🏻 stale

Komentar yang paling membantu

Saya memiliki masalah yang sama dan saran @Panda313 untuk menambahkan await RNIap.initConnection() di componentDidMount berhasil.
Sayang sekali ini tidak didokumentasikan dengan lebih baik...

Semua 11 komentar

Sama di sini, namun tampaknya berfungsi di Android.

Saya mungkin telah memperbaikinya dengan menambahkan

const result = menunggu RNIap.initConnection();
menunggu RNIap.consumeAllItemsAndroid();
console.log('hasil', hasil);

Di awal componentDidMount ;

Beri tahu saya jika itu membantu

@hyochan Sudahkah Anda menemukan resolusi untuk ini? Saya juga mengalami masalah yang sama di iOS. Ini sangat membuat frustrasi, dan saya tidak bisa melewati tinjauan aplikasi karena menelepon RNIap.requestPurchase tidak merespons dengan peringatan baik yang mempromosikan pengguna untuk menyetujui persyaratan berlangganan atau mengonfirmasi bahwa langganan sudah aktif. Jika saya menutup paksa aplikasi dan mencobanya lagi, terkadang berhasil. Saya tidak tahu apakah ada masalah dengan kotak pasir atau perpustakaan ini.

@smarttouchtechnology Sudahkah Anda menelepon initConnection ? Ini diperlukan dari 4.4.5 .

Mungkin sulit bagi @smarttouchtechnology untuk membaca jawaban di bawah yang "menyelesaikan" "masalah" ;)

Saya memiliki masalah yang sama dan saran @Panda313 untuk menambahkan await RNIap.initConnection() di componentDidMount berhasil.
Sayang sekali ini tidak didokumentasikan dengan lebih baik...

@Panda313 ... Anda baru saja menyelamatkan saya 1 minggu malam tanpa tidur dari penolakan apel

Bisakah seseorang menambahkan ini ke dokumentasi sehingga lebih banyak orang tidak mengalami masalah ini? Saya tidak yakin cara terbaik untuk menambahkannya.

EDIT: Ditambahkan di sini. #1088.

Jangan ragu untuk meninjau (saya tidak yakin saya melakukannya dengan benar.)

Saya mungkin telah memperbaikinya dengan menambahkan

const result = menunggu RNIap.initConnection();
menunggu RNIap.consumeAllItemsAndroid();
console.log('hasil', hasil);

Di awal componentDidMount ;

Beri tahu saya jika itu membantu

Untuk iOS, saya tidak mendapat tanggapan dari requestSubscription . Saya mencoba menambahkan await RNIap.initConnection(); di depan RNIap.requestSubscription dan berhasil untuk saya. Sekarang saya menerima objek pembelian di pendengar di root aplikasi. Dan itu juga melanjutkan lebih jauh ke bawah kode setelah diselesaikan baik dalam kesalahan atau dalam respons yang berhasil.

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.

Menutup masalah ini setelah lama tidak aktif. Jika masalah ini masih ada di rilis terbaru, jangan ragu untuk membuat masalah baru dengan informasi terkini.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat