React-native-onesignal: (v3.2.1) (iOS) pushToken null pada perangkat nyata

Dibuat pada 14 Mei 2018  ·  36Komentar  ·  Sumber: OneSignal/react-native-onesignal

Keterangan:
Tidak bisa mendapatkan pushToken, tidak ada pengguna ios di dasbor, saya mencoba semuanya, saya membuat ulang sertifikat, kunci, menggunakan alat penyediaan, mencoba perangkat nyata yang berbeda.

Di android semuanya bekerja seperti pesona.

Lingkungan

  1. Versi OneSignal React-Native SDK apa yang Anda gunakan: latest 3.2.1
  2. Bagaimana Anda menambahkan SDK ke proyek Anda (mis. npm) npm i --save react-native-onesignal
  3. [email protected]
  4. Xcode Version 9.3 (9E145)
  5. Node.js 8.4.0

paket saya.json

package json rbtse 2018-05-14 11-59-05

Langkah-langkah untuk Mereproduksi Masalah:

  1. Ikuti semua kemungkinan varian dalam instruksi di onesignal.com
  2. Tambahkan kode js dari folder contoh di repo ini
  3. Uji pada perangkat nyata (iphone x dengan ios 11, iphone 6s dengan ios 10)

kode js

export default class App extends Component {
  componentWillMount() {
    OneSignal.setLogLevel(7, 0);
    OneSignal.init('here my ONESIGNAL APP ID - I checked it twenty times', { kOSSettingsKeyAutoPrompt: true });
    OneSignal.setSubscription(true);
    OneSignal.enableSound(true);
    OneSignal.enableVibrate(true);
    OneSignal.inFocusDisplaying(2);

    OneSignal.getPermissionSubscriptionState((response) => {
      console.log('Received permission subscription state: ', response);
    });
  }

Saya mendapat tanggapan dari getPermissionSubscriptionState :

{
  emailAddress:null
  emailSubscribed:false
  emailUserId:null
  hasPrompted:true
  notificationsEnabled:true
  pushToken:null
  subscriptionEnabled:false
  userId:null
  userSubscriptionEnabled:true
}

Tentu saja tidak ada pengguna ios di dasbor.

Tambahan saya melihat log di xcode

Called init with app ID: (null)
2018-05-14 11:21:03.636571+0300 rbtse[15320:6135130] Called init with app ID: xxxxxx-ea78-4b29-8b91-xxxxxxxxx (I changed app id)
2018-05-14 11:21:03.636758+0300 rbtse[15320:6135130] DEBUG: Downloading iOS parameters for this application
2018-05-14 11:21:03.642023+0300 rbtse[15320:6135181] VERBOSE: getNotificationTypes:mSubscriptionStatus: -1
2018-05-14 11:21:03.643531+0300 rbtse[15320:6135130] VERBOSE: registerForPushNotifications Called:waitingForApnsResponse: 1
2018-05-14 11:21:03.690752+0300 rbtse[15320:6135130] VERBOSE: oneSignalApplicationWillResignActive
2018-05-14 11:21:03.986984+0300 rbtse[15320:6135181] VERBOSE: network response (OSRequestGetIosParams): {
    fba = 1;
}
2018-05-14 11:21:05.778574+0300 rbtse[15320:6135130] VERBOSE: oneSignalApplicationDidBecomeActive
2018-05-14 11:21:05.778918+0300 rbtse[15320:6135130] VERBOSE: getNotificationTypes:mSubscriptionStatus: -1
2018-05-14 11:21:05.792324+0300 rbtse[15320:6135130] VERBOSE: updateNotificationTypes called: 15
2018-05-14 11:21:05.792388+0300 rbtse[15320:6135130] VERBOSE: startedRegister: 1

Komentar yang paling membantu

Halo semuanya @dooboolab @hhunaid @408dev @el-lsan @neo125874 @Jarred-Sumner

Pembaruan baru (3.2.3) telah dirilis dan akan memperbaiki masalah ini. Jangan ragu untuk memberi tahu saya jika Anda melihat masalah ini (atau masalah lain) lagi dan saya akan dengan senang hati menyelidikinya.

Semua 36 komentar

Saya menemukan masalah yang sama https://github.com/geektimecoil/react-native-onesignal/issues/502
Jadi saya mencoba menurunkan versi ke https://github.com/geektimecoil/react-native-onesignal/tree/3.1.4 - ikuti semua langkah dan sekarang berhasil!

react native debugger - connected port 8081 2018-05-14 12-24-59

users rbtse onesignal 2018-05-14 12-27-59

Jadi versi terakhir tidak berfungsi

Hai, ketika Anda menginstal versi terbaru react-native-onesignal (3.2.2) dan menjalankan react-native link react-native-onesignal , dapatkah Anda membuka proyek Xcode dan memverifikasi bahwa RCTOneSignal muncul dengan benar sebagai ketergantungan dalam proyek Anda seperti ini?

alt text

pushToken dan userId juga nol untuk saya di perangkat nyata (dalam mode rilis)
image

[email protected]:
  version "3.2.2"
  resolved "https://registry.yarnpkg.com/react-native-onesignal/-/react-native-onesignal-3.2.2.tgz#d1ae1e95cc301b940120de29a29ae90f478c9a97"
  dependencies:
    invariant "^2.2.2"

(kali ini tidak ada di podfile saya)

@Jarred-Sumner Coba hapus instalan aplikasi dari perangkat Anda, lalu instal ulang, apakah itu meminta Anda untuk menerima izin pemberitahuan push?

Juga, hanya untuk memeriksa, Anda mengaktifkan kemampuan Pemberitahuan Push di Pengaturan Proyek> Kemampuan, benar?

@Jarred-Sumner Coba hapus instalan aplikasi dari perangkat Anda, lalu instal ulang, apakah itu meminta Anda untuk menerima izin pemberitahuan push?

Ya

Juga, hanya untuk memeriksa, Anda mengaktifkan kemampuan Pemberitahuan Push di Pengaturan Proyek> Kemampuan, benar?

Ya
image
image

Saya menurunkan versi ke v3.1.4 dan sekarang mengirimkan pushToken dan userId

@ Jarred-Sumner Hanya untuk memahami masalah ini sedikit lebih baik, ID-nya nol, tetapi apakah pemberitahuan push benar-benar berfungsi? Seharusnya tidak, tetapi saya ingin memeriksa ulang.

Juga, dapatkah Anda mencoba memperbarui ke 3.2.2, menginisialisasi dengan JS, dan memanggil OneSignal.setLogLevel(6, 0) sebelum Anda memanggil init. Bisakah Anda memberi tahu saya jika Anda melihat kesalahan yang dicetak ke konsol?

Masalah tetap ada pada 3.2.2.
Mengatur level log akan mencetak output berikut

Disebut init dengan ID aplikasi: (null)
(Kemudian di suatu tempat di bawah dalam log)
Disebut init dengan ID aplikasi: (id-aplikasi-saya)

Tapi userId masih nol. Saya telah menyertakan perpustakaan menggunakan CocoaPods jika itu membantu

@hhunaid diharapkan ID aplikasi akan menjadi nol pertama kali (mungkin kita harus menghapus pernyataan log pertama itu untuk menghindari kebingungan).

ID pengguna juga diharapkan menjadi nol hingga pengguna menerima izin push pada perangkat iOS asli. Bisakah Anda mengkonfirmasi ini masalahnya? Jika demikian, dapatkah Anda memposting tautan ke setidaknya 15 detik output log dari Xcode dengan level log itu (pastikan untuk memanggil setLogLevel sebelum memanggil init)

@Nightsd01 bukan hanya pernyataan LOG. Sebenarnya ada panggilan ke OneSignal initializer dengan null appId. Saya baru saja memeriksa bahwa jika saya menghapus baris init dalam metode initOneSignal semuanya berfungsi.

@hhunaid ya, diharapkan panggilan pertama ke penginisialisasi akan dengan ID Aplikasi nol, ini adalah berapa banyak SDK pembungkus kami yang berfungsi. Anda mengatakan bahwa jika Anda menghapus panggilan pertama ini, "semuanya berfungsi"...?

Untuk mengesampingkan perubahan lain yang mungkin telah Anda buat, dapatkah Anda membatalkan komentar initOneSignal lagi untuk memverifikasi bahwa itu berhenti berfungsi...?

Bisakah Anda memposting package.json sehingga saya dapat melihat dependensi apa yang Anda gunakan?

Saya telah mencoba dan mematikan dengan dan tanpa potongan kode yang disebutkan dan sekarang saya dapat mengatakan dengan yakin bahwa memang itu adalah pelakunya. Setidaknya di aplikasi saya.
Menghapusnya memberi saya playerId yang valid dan perangkat saya ditampilkan di dasbor OneSignal. Yang tidak terjadi sebelumnya.

Sama disini. PushToken selalu nol. Saya akan menempelkan tangkapan layar di bawah ini.
screen shot 2018-05-16 at 3 55 07 am

package.json saya seperti di bawah ini.

    "abortcontroller-polyfill": "^1.1.9",
    "immutability-helper": "^2.7.0",
    "mobx": "^4.2.1",
    "mobx-react": "^5.1.2",
    "moment": "^2.22.1",
    "react": "^16.3.2",
    "react-native": "^0.55.4",
    "react-native-amplitude-analytics": "^0.1.15",
    "react-native-animatable": "^1.2.4",
    "react-native-audio-recorder-player": "^1.0.15",
    "react-native-iap": "^1.0.1",
    "react-native-image-picker": "^0.26.10",
    "react-native-linear-gradient": "^2.4.0",
    "react-native-loading-spinner-overlay": "^0.5.2",
    "react-native-localization": "^1.0.7",
    "react-native-marquee": "^0.3.1",
    "react-native-modalbox": "^1.4.2",
    "react-native-onesignal": "^3.2.2",
    "react-native-permissions": "^1.1.1",
    "react-native-pinch-zoom-view": "^0.1.6",
    "react-native-sentry": "^0.36.0",
    "react-native-status-bar-height": "^2.0.0",
    "react-native-swiper": "^1.5.13",
    "react-navigation": "^2.0.1",
    "serializr": "^1.2.0"

@dooboolab Anda menggunakan inisialisasi JS, benar?

Bisakah Anda memberi tahu saya di mana dalam proyek Anda yang Anda panggil OneSignal.init() ?

Selama hidup saya, saya _tidak bisa_ mereproduksi masalah ini. Jika seseorang dapat mereproduksi masalah ini dalam proyek demo dan mempostingnya, kami dapat memperbaiki masalah ini _jauh_ lebih cepat.

@tavriaforever hai, jadi

masalah yang sama di sini, ada solusi?

    "react": "16.3.1",
    "react-native": "0.55.3",
    "react-native-onesignal": "^3.2.0",

@Nightsd01
Saya memanggil root saya index.tsx mana ia membungkus RootStackNavigator.

class App extends React.Component {
  public componentDidMount() {
    OneSignal.init('****');
    OneSignal.addEventListener('received', this.onReceived);
    OneSignal.addEventListener('opened', this.onOpened);
    OneSignal.addEventListener('ids', this.onIds);
    OneSignal.enableVibrate(true);
    OneSignal.enableSound(true);

.....
public render() {
    return (
      <Provider
        store={ appStore }
        user={ userStore }
        player={ playerStore }
      >
        <View style={styles.container}>
          <RootStackNavigator />
        </View>
      </Provider>
    );

Masih menderita karena mendapatkan token nol.

@Nightsd01 Sama di sini.
Menghapus init dengan appId:nil di RCTOneSignal.m membantu

@Nightsd01 Saya baru saja mencoba di Android, dan Android memiliki masalah yang sama.

Saya kira inisialisasi sisi JS bukanlah ide yang bagus.
Saya mengerti meskipun itu memudahkan pengembang web atau orang-orang tanpa latar belakang asli untuk dengan mudah menggunakan perpustakaan.

@hhunaid sepertinya saya harus menurunkan versi?

@dooboolab @408dev ya, saya akan merekomendasikan bahwa jika Anda mengalami masalah ini, Anda menurunkan versi ke 3.1.4 untuk saat ini sampai kami menyelesaikan masalah ini. Permintaan maaf. Ingatlah bahwa JS init tidak didukung di 3.1.4 jadi Anda harus mengikuti panduan untuk menambahkan kode inisialisasi asli ke proyek Anda.

@hhunaid memang membuat segalanya lebih mudah bagi

Sebagai pembaruan, kami dapat mereproduksi masalah ini dan telah mengidentifikasi penyebabnya, kami akan segera meluncurkan pembaruan untuk menyelesaikannya.

Halo semuanya - masalah ini telah diselesaikan dalam PR baru (#512). Kami berharap ini digabungkan dan pembaruan baru dirilis dalam satu atau dua jam ke depan. Terima kasih atas kesabaran Anda!

Halo semuanya @dooboolab @hhunaid @408dev @el-lsan @neo125874 @Jarred-Sumner

Pembaruan baru (3.2.3) telah dirilis dan akan memperbaiki masalah ini. Jangan ragu untuk memberi tahu saya jika Anda melihat masalah ini (atau masalah lain) lagi dan saya akan dengan senang hati menyelidikinya.

@Nightsd01
saya menggunakan

  "react": "16.3.1",
  "react-native": "0.55.3",
  "react-native-onesignal": "^3.2.3",

pada perangkat nyata semuanya berfungsi dengan baik seperti yang diharapkan, tetapi saya masih menerima null userId secara acak pada simulators dan saya tidak melihat perangkat apa pun ditambahkan ke daftar pemain saya! (sejauh ini saya menguji seperti> 50 kali dan hanya 2 kali yang berhasil!)
Saya mencoba membersihkan dan membangun kembali aplikasi serta rm -rf node_modules/ && yarn cache clean && yarn install && yarn start -- --reset-cache tetapi saya masih tidak mendapatkan status yang diharapkan dari OneSignal.getPermissionSubscriptionState

{ userSubscriptionEnabled: true,
  subscriptionEnabled: false,
  pushToken: null,
  emailAddress: null,
  userId: null,
  hasPrompted: true,
  notificationsEnabled: true,
  emailUserId: null,
  emailSubscribed: false }

@el-lsan yang diharapkan. Itu adalah batasan Apple, bukan milik kita. Simulator iOS tidak dapat menerima pemberitahuan push. Mereka tidak akan mendapatkan token push APNS dan tidak akan terdaftar di OneSignal.

Jika Anda menguji pemberitahuan push, Anda harus melakukannya di perangkat iOS nyata, apakah Anda menggunakan OneSignal atau tidak.

@Nightsd01
Maaf, posting terakhir saya tidak begitu jelas. Saya tidak bermaksud menerima dorongan pada simulator tetapi mendaftarkan perangkat simulator.
Jadi setelah OneSignal.init('ONESIGNAL_APP_ID'); Saya mengharapkan perangkat simulasi terdaftar di pengguna berlangganan saya dengan label Ios Simulator Unsupported seperti yang Anda lihat di tangkapan layar berikut:

image

Inilah respons OneSignal.getPermissionSubscriptionState untuk simulator yang terdaftar:

image

Tetapi seringkali inisialisasi gagal pada simulator dan saya tidak melihatnya di bawah https://onesignal.com/apps/ONESIGNAL_APP_ID/players

@el-lsan Saya memiliki masalah yang sama Push token is null, apakah Anda menemukan solusi?

@adirzoari setelah memperbarui ke "react-native-onesignal": "^3.2.3" masalah telah diperbaiki untuk perangkat nyata, jika Anda bermaksud menerima token nol untuk simulator, saya percaya begitulah seharusnya.

Di sisi lain saya mengharapkan userId disetel untuk simulator tetapi untuk beberapa alasan aneh sering kali gagal dan mengembalikan nol!

Saya menggunakan perangkat nyata dan mendapatkan token nol

@adirzoari Aneh! Coba bersihkan cache rm -rf node_modules/ && yarn cache clean && yarn install && yarn start -- --reset-cache dan periksa kembali langkah -

@el-lsan pushToken adalah nol tetapi di userId memiliki string unik. di onesignal saya dapat
Kesalahan Perpustakaan Layanan Google Play

Saya memiliki masalah yang sama dengan 3.2.7 (simulator - OK/perangkat nyata - NOK) tetapi membersihkan cache seperti yang disarankan oleh @el-lsan membuatnya berjalan tanpa masalah

@Nightsd01 Sama di sini.
Menghapus init dengan appId:nil di RCTOneSignal.m membantu

hai, tolong tambahkan gambar perubahan berikut.

@adirzoari setelah memperbarui ke "react-native-onesignal": "^3.2.3" masalah telah diperbaiki untuk perangkat nyata, jika Anda bermaksud menerima token nol untuk simulator, saya percaya begitulah seharusnya.

Di sisi lain saya mengharapkan userId disetel untuk simulator tetapi untuk beberapa alasan aneh sering kali gagal dan mengembalikan nol!

hai saya mendapatkan pushToken: null di simulator, dan hanya mendapatkan userId untuk simulator.
Apakah saya akan mendapatkan pushToken untuk perangkat nyata, harap konfirmasi, (apakah, saya harus khawatir tentang masalah null pushToken di simulator atau tidak?).

Apakah halaman ini membantu?
0 / 5 - 0 peringkat