React-native-onesignal: Acara onOpened/onReceived tidak diaktifkan di android

Dibuat pada 9 Jul 2018  ·  35Komentar  ·  Sumber: OneSignal/react-native-onesignal

Keterangan:
Hai semuanya. Saya mengalami masalah dengan acara onOpened/onReceived di Android. Perilaku berbeda pada emulator dan perangkat nyata, tetapi pesan push yang tepat dikirimkan dalam kedua kasus.

Pada emulator:

  1. Latar depan - acara onReceived dipanggil, onOpened dipanggil hanya ketika Push diketuk (benar)
  2. Latar belakang aktif - tidak ada yang diaktifkan sama sekali (salah)
  3. Latar belakang tidak aktif (aplikasi ditutup) - onOpened dipanggil hanya ketika push diketuk (benar)

Pada perangkat nyata:

  1. Latar depan - tidak ada yang ditembakkan sama sekali (salah)
  2. Latar belakang aktif - tidak ada yang diaktifkan sama sekali (salah)
  3. Latar belakang tidak aktif (aplikasi ditutup) - onOpened dipanggil hanya ketika push diketuk (benar)

Lingkungan

  1. reaksi-asli-onesignal: "3.2.4"
  2. reaksi-asli: "0.50.4"
  3. compileSdkVersion: "27"
  4. buildToolsVersion: "27.0.3"
  5. tingkat: "4.1"

Langkah-langkah untuk Mereproduksi Masalah:
Tidak dapat memberikan langkah-langkah untuk mereproduksi karena kebijakan kerahasiaan perusahaan saya.

Ada yang lain:
android/build.gradle

```// File build tingkat atas tempat Anda dapat menambahkan opsi konfigurasi yang umum untuk semua sub-proyek/modul.

skrip bangunan {
tempat penyimpanan {
jcenter()
google()
}
dependensi {
classpath 'com.android.tools. build:gradle :3.0.1'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

}

semua proyek {
tempat penyimpanan {
maven { url " https://jitpack.io " } // digunakan untuk MPAndroidChart
mavenLokal()
google()
jcenter()
ahli {
// Semua React Native (JS, sumber Obj-C, binari Android) diinstal dari npm
url "$rootDir/../node_modules/react-native/android"
}
}
}

`android/app/build.gradle`

terapkan plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
terapkan plugin: "com.android.application"

impor com.android.build.OutputFile

skrip bangunan {
tempat penyimpanan {
maven { url ' https://plugins.gradle.org/m2/ ' } // Portal Plugin Gradle
}
dependensi {
classpath 'gradle.plugin.com. onesignal: onesignal-gradle-plugin :[0.10.0, 0.99.99]'
}
}

terapkan plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

/**

  • File react.gradle mendaftarkan tugas untuk setiap varian build (mis. bundleDebugJsAndAssets
  • dan bundleReleaseJsAndAssets).
  • Ini pada dasarnya memanggil react-native bundle dengan argumen yang benar selama Android build
  • siklus. Secara default, bundleDebugJsAndAssets dilewati, seperti dalam mode debug/dev kami lebih suka memuat
  • bundel langsung dari server pengembangan. Di bawah ini Anda dapat melihat semua kemungkinan konfigurasi
  • dan default mereka. Jika Anda memutuskan untuk menambahkan blok konfigurasi, pastikan untuk menambahkannya sebelum
  • apply from: "../../node_modules/react-native/react.gradle" baris.
    *
  • proyek.ext.react = [
  • // nama file aset yang dihasilkan yang berisi bundel JS Anda
  • bundleAssetName: "index.android.bundle",
    *
  • // file entri untuk pembuatan bundel
  • entriFile: "index.android.js",
    *
  • // apakah akan menggabungkan JS dan aset dalam mode debug
  • bundleInDebug: salah,
    *
  • // apakah akan menggabungkan JS dan aset dalam mode rilis
  • bundleInRelease: benar,
    *
  • // apakah akan menggabungkan JS dan aset dalam varian build lain (jika dikonfigurasi).
  • // Lihat http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Variants
  • // Properti konfigurasi dapat dalam format berikut
  • // 'bundleIn${productFlavor}${buildType}'
  • // 'bundleIn${buildType}'
  • // bundleInFreeDebug: benar,
  • // bundleInPaidRelease: benar,
  • // bundelInBeta: benar,
    *
  • // apakah akan menonaktifkan mode dev dalam varian build kustom (secara default hanya dinonaktifkan dalam rilis)
  • // misalnya: untuk menonaktifkan mode dev dalam tipe staging build (jika dikonfigurasi)
  • devDisabledInStaging: benar,
  • // Properti konfigurasi dapat dalam format berikut
  • // 'devDisabledIn${productFlavor}${buildType}'
  • // 'devDisabledIn${buildType}'
    *
  • // root proyek Anda, yaitu tempat "package.json" berada
  • akar: "../../",
    *
  • // di mana menempatkan aset bundel JS dalam mode debug
  • jsBundleDirDebug: "$buildDir/perantara/aset/debug",
    *
  • // di mana menempatkan aset bundel JS dalam mode rilis
  • jsBundleDirRelease: "$buildDir/perantara/aset/rilis",
    *
  • // tempat meletakkan sumber daya yang dapat digambar / React Native assets, misalnya yang Anda gunakan melalui
  • // membutuhkan('./image.png')), dalam mode debug
  • resourcesDirDebug: "$buildDir/intermediate/res/merged/debug",
    *
  • // tempat meletakkan sumber daya yang dapat digambar / React Native assets, misalnya yang Anda gunakan melalui
  • // membutuhkan('./image.png')), dalam mode rilis
  • resourcesDirRelease: "$buildDir/intermediate/res/merged/release",
    *
  • // secara default tugas gradle dilewati jika tidak ada file atau aset JS yang berubah; ini berarti
  • // bahwa kita tidak melihat file di android/ atau ios/ untuk menentukan apakah tugas sudah selesai
  • // tanggal; jika Anda memiliki folder lain yang ingin Anda abaikan karena alasan kinerja (gradle
  • // mengindeks seluruh pohon), tambahkan di sini. Atau, jika Anda memiliki file JS di Android/
  • // misalnya, Anda mungkin ingin menghapusnya dari sini.
  • inputTidak termasuk: ["android/ ", "ios/ "],
    *
  • // menimpa simpul mana yang dipanggil dan dengan argumen tambahan apa
  • nodeExecutableAndArgs: ["simpul"],
    *
  • // berikan argumen tambahan ke pembuat paket
  • extraPackagerArgs: []
  • ]
    */

proyek.ext.react = [
cliPath: "node_modules/haul/bin/cli.js"
]

terapkan dari: "../../node_modules/react-native/react.gradle"

/**

  • Setel ini ke true untuk membuat dua APK terpisah, bukan satu:

    • APK yang hanya berfungsi di perangkat ARM


    • APK yang hanya berfungsi di perangkat x86

  • Keuntungannya adalah ukuran APK berkurang sekitar 4MB.
  • Unggah semua APK ke Play Store dan orang-orang akan mengunduh
  • yang benar berdasarkan arsitektur CPU perangkat mereka.
    */
    def enableSeparateBuildPerCPUArchitecture = false

/**

  • Jalankan Proguard untuk mengecilkan bytecode Java di build rilis.
    */
    def enableProguardInReleaseBuilds = false

android {
kompilasiSdkVersion 27
buildToolsVersion "27.0.3"

defaultConfig {
    applicationId "com.binomysteryshopper"
    minSdkVersion 16
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
    vectorDrawables.useSupportLibrary = true
    ndk {
        abiFilters "armeabi-v7a", "x86"
    }
}
signingConfigs {
      release {
          if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
              storeFile file(MYAPP_RELEASE_STORE_FILE)
              storePassword MYAPP_RELEASE_STORE_PASSWORD
              keyAlias MYAPP_RELEASE_KEY_ALIAS
              keyPassword MYAPP_RELEASE_KEY_PASSWORD
          }
      }
  }
splits {
    abi {
        reset()
        enable enableSeparateBuildPerCPUArchitecture
        universalApk false  // If true, also generate a universal APK
        include "armeabi-v7a", "x86"
    }
}
buildTypes {
    release {
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        signingConfig signingConfigs.release
    }
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
    variant.outputs.each { output ->
        // For each separate APK per architecture, set a unique version code as described here:
        // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
        def versionCodes = ["armeabi-v7a":1, "x86":2]
        def abi = output.getFilter(OutputFile.ABI)
        if (abi != null) {  // null for the universal-debug, universal-release variants
            output.versionCodeOverride =
                    versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
        }
    }
}

}

dependensi {
kompilasi (proyek(':react-native-onesignal')){
mengecualikan grup: "com.google.android.gms"
}
kompilasi ("com.google.android.gms:play-services-base:12.0.1") {
kekuatan = benar;
}
kompilasi proyek(':react-native-sound')
kompilasi proyek(':react-native-audio')
kompilasi proyek(':react-native-fetch-blob')
kompilasi proyek(':react-native-fs')
kompilasi proyek(':react-native-geocoder')
kompilasi proyek(':react-native-image-crop-picker')
kompilasi proyek(':react-native-version-check')
kompilasi proyek(':react-native-charts-wrapper')
kompilasi proyek(':react-native-spinkit')
kompilasi proyek(':react-native-svg')
kompilasi proyek(':react-native-maps')
kompilasi fileTree(dir: "libs", sertakan: ["*.jar"])
kompilasi "com.android.support:appcompat-v7 : 23.0.1 "
kompilasi "com.facebook. react:react-native :+" // Dari node_modules
}

// Jalankan ini sekali untuk dapat menjalankan aplikasi dengan BUCK
// menempatkan semua dependensi kompilasi ke dalam folder libs untuk digunakan BUCK
tugas copyDownloadableDepsToLibs(ketik: Salin) {
dari configurations.compile
ke dalam 'libs'
}

`android/app/src/main/java/com/binomysteryshopper/MainApplication.java`

paket com.binomysteryshopper;

impor android.app.Application;

impor com.facebook.react.ReactApplication;
impor com.geektime.rnonesignalandroid.ReactNativeOneSignalPackage;
impor com.zmxv.RNSound.RNSoundPackage;
impor com.rnim.rn.audio.ReactNativeAudioPackage;
impor com.RNFetchBlob.RNFetchBlobPackage;
impor com.rnfs.RNFSPackage;
impor com.reactnative.ivpusic.imagepicker.PickerPackage;
impor io.xogus.reactnative.versioncheck.RNVersionCheckPackage;
impor com.github.wuxudong.rncharts.MPAndroidChartPackage;
impor com.react.rnspinkit.RNSpinkitPackage;
impor com.horcrux.svg.SvgPackage;
impor com.facebook.react.ReactNativeHost;
impor com.facebook.react.ReactPackage;
impor com.facebook.react.shell.MainReactPackage;
impor com.devfd.RNGeocoder.RNGeocoderPackage;
impor com.facebook.soloader.SoLoader;
impor com.airbnb.android.react.maps.MapsPackage;

impor java.util.Arrays;
impor java.util.List;

MainApplication kelas publik meluas Aplikasi mengimplementasikan ReactApplication {

private final ReactNativeHost mReactNativeHost = new ReactNativeHost(ini) {
@Mengesampingkan
getUseDeveloperSupport () boolean publik {
kembalikan BuildConfig.DEBUG;
}

<strong i="13">@Override</strong>
protected List<ReactPackage> getPackages() {
  return Arrays.<ReactPackage>asList(
      new MainReactPackage(),
        new ReactNativeOneSignalPackage(),
        new RNSoundPackage(),
        new ReactNativeAudioPackage(),
        new RNFetchBlobPackage(),
        new RNFSPackage(),
        new PickerPackage(),
        new RNVersionCheckPackage(),
        new MPAndroidChartPackage(),
        new RNSpinkitPackage(),
        new RNGeocoderPackage(),
        new SvgPackage(),
        new MapsPackage()
  );
}

<strong i="14">@Override</strong>
protected String getJSMainModuleName() {
  return "index";
}

};

@Mengesampingkan
publik ReactNativeHost getReactNativeHost() {
kembalikan mReactNativeHost;
}

@Mengesampingkan
public void onCreate() {
super.onBuat();
SoLoader.init(ini, /* exopackage asli */ false);
}
}

`AndroidManifest.xml`

package="com.binomysteryshopper">









android:minSdkVersion="16"
android:targetSdkVersion="22" />

android:nama=".MainApplication"
android:allowBackup="benar"
android:label="@string/nama_aplikasi"
android:icon="@mipmap/ic_launcher"
android:largeHeap="benar"
android:theme="@style/AppTheme">

<activity
  android:name=".MainActivity"
  android:launchMode="singleTop"
  android:label="@string/app_name"
  android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
  android:screenOrientation="portrait"
  android:windowSoftInputMode="adjustResize"
  android:theme="@style/AppTheme">
    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <action android:name="android.intent.action.DOWNLOAD_COMPLETE"/>
      <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="binoshopper" />
    </intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />


`my OneSignal init`

komponenWillMount() {
OneSignal.init(ONESIGNAL_APP_ID, {
kOSSettingsKeyAutoPrompt: benar,
kOSSettingsKeyInAppLaunchURL: salah,
kOSSSettingsKeyPromptBeforeOpeningPushURL: benar,
})
OneSignal.inFocusDisplaying(2)

OneSignal.addEventListener('received', this.onPushNotificationReceived)
OneSignal.addEventListener('opened', this.onPushNotificationOpened)

}

componentWillUnmount() {
OneSignal.removeEventListener('diterima', this.onPushNotificationReceived)
OneSignal.removeEventListener('dibuka', this.onPushNotificationOpened)
}

onPushNotificationReceived(pemberitahuan) {
Alert.alert('onReceived') // untuk pengujian pada perangkat nyata
}

onPushNotificationOpened(openResult) {
Alert.alert('onOpened') // untuk pengujian pada perangkat nyata
}
```

Komentar yang paling membantu

@sofianegargouri Ini PRnya: https://github.com/geektimecoil/react-native-onesignal/pull/592

Kami akan merilis pembaruan besok atau lusa.

Semua 35 komentar

Di IOS itu bekerja dengan sempurna. Sayangnya saya tidak dapat memberikan log dari logcat android, karena saya tidak memiliki perangkat yang sebenarnya. Saya sedang menguji di perangkat teman saya yang jauh karena TeamViewer.

Saya juga mencoba OneSignal.setLogLevel(0, 6) pada perangkat nyata. Tetapi tidak ada kesalahan yang ditemukan, semua permintaan berhasil, hanya acara yang tidak diaktifkan.

Hai @Ble3k , kami cukup sibuk mengerjakan Flutter SDK baru-baru ini dan belum sempat menyelidiki masalah Anda, namun saya akan menyelidikinya besok dan akan segera menghubungi Anda kembali, mohon maaf atas keterlambatannya!

Hai,

Hanya ingin mengatakan saya melihat perilaku yang sama pada 3.2.5 pada perangkat dev. Aneh karena saya belum mengubah apa pun baru-baru ini dan saya cukup yakin itu berhasil beberapa hari yang lalu, karena dorongan terfokus saya ditampilkan sebagai roti panggang dalam aplikasi, saya ingat telah menguji ini dan itu berhasil.

Saya tidak akan menyelidiki lebih lanjut karena kami memutuskan untuk beralih ke pemberitahuan push normal bahkan ketika aplikasi difokuskan

@Nightsd01 Thx, akan menunggu penyelidikan Anda.

Di Android menghadapi keterlambatan dalam menerima notifikasi, diuji di ponsel Android saya dan menerima notifikasi setelah 30-40 menit, beberapa kali diuji

Ada pembaruan tentang ini? Saya mengalami masalah yang sama pada perangkat Android (Samsung Galaxy S7).

Tak satu pun dari acara onOpened atau onReceived yang diaktifkan, namun, notifikasi sedang diterima. Kita harus dapat menavigasi pengguna ke layar tertentu saat event onOpened diaktifkan.

Adakah yang punya masalah dengan acara (diterima, dibuka) tidak dipecat setelah memuat ulang aplikasi Android asli reaksi dengan menekan dua kali R, atau menggunakan paket react-native-restart.

@ackosumane Saya benar-benar menggunakan Expo dan Updates.reload() sangat sering dalam alur kerja dev saya.

Dan Anda benar:

  • Saya dapat mengaktifkan panggilan balik saat aplikasi pertama dimulai
  • Saya tidak melihat panggilan balik yang diaktifkan setelah aplikasi pertama dimuat ulang

@Nightsd01 Jadi sepertinya integrasi Android OneSignal RN saat ini tidak mendukung pemuatan ulang aplikasi dengan baik. Ini tidak berdampak seperti yang saya kira karena sebagian besar waktu pengguna tidak akan memuat ulang aplikasi, tetapi ada kasus produksi di mana kami ingin pengguna memuat ulang aplikasi (pembaruan OverTheAir seperti Expo/CodePush, atau pengguna logout?). Dalam kasus seperti itu, alangkah baiknya setelah memuat ulang dorongan tidak rusak;)

@Nightsd01 Hai, ada pembaruan?

Halo, saya juga menghadapi masalah yang sama. Adakah solusi untuk ini ???

Sebagai pembaruan tentang masalah ini: kami berencana untuk memperbaikinya di pembaruan berikutnya!

@Nightsd01 Setiap tanggal? Apakah ada cabang yang bisa kami perbaiki?

@sofianegargouri Ini PRnya: https://github.com/geektimecoil/react-native-onesignal/pull/592

Kami akan merilis pembaruan besok atau lusa.

terima kasih @Nightsd01 , masalah ini bisa ditutup saya kira

bisakah Anda mempublikasikan rilis npm baru dengan perbaikannya?

Bagi siapa saja yang terjebak dengan masalah ini, kode dari master berfungsi dengan baik sekarang.

Jalankan saja yang berikut ini:

npm install git+ https://github.com/geektimecoil/react-native-onesignal#master --save

@eabuslaiman30 Masih menghadapi masalah. Saya menggunakan git+ https://github.com/geektimecoil/react-native-onesignal#master seperti yang Anda sebutkan di atas. Masih tidak ada peristiwa yang dipicu di Android. Adakah yang bisa menyarankan versi terbaru mana yang stabil? Sebelumnya saya menggunakan versi 3.0.5 yang berfungsi dengan baik kecuali aplikasi dimatikan dan pemberitahuan tidak diterima di Android 8.0 (Oreo). Untuk memperbaiki masalah itu saya memperbarui ke versi terbaru dan saya mendapatkan kesalahan ini.

@eabuslaiman30 @Nightsd01 Saya juga mencoba dan menyukai @shahchaitanya saya masih menghadapi masalah.

Saya telah membuat PR yang tampaknya memperbaiki pendengar yang tidak berlangganan lagi: https://github.com/geektimecoil/react-native-onesignal/pull/593

@shahchaitanya Anda dapat mengedit kode Java proyek lokal dengan perubahan kecil ini dan ini akan menyelesaikan masalah Anda untuk sementara.

Hai @slorber Solusi Anda memicu metode onOpened dan onReceived. Tapi event onIds belum terpicu? Apakah Anda memeriksa acara onIds dipicu atau tidak dalam kode Anda? Saya berpikir untuk tetap menggunakan react-native-onesignal versi 3.0.5 hingga versi terbaru menjadi stabil.

Saya baru saja menguji dan semua 3 panggilan balik diaktifkan pada aplikasi restart untuk saya, dimulai dengan onIds.

Bahkan jika onIds tidak menyala, itu tidak akan menjadi masalah besar bagi saya karena id tidak mungkin berubah saat restart dan mereka telah dikirim ke backend saya.

@slorber Bagi saya itu masalah besar jika onIds tidak menyala saat memulai ulang aplikasi. Saya menyimpan idToken di penyimpanan lokal dan juga backend. Saat keluar saya menghapusnya dari backend Dan Entah bagaimana jika pengguna menghapus penyimpanan lokal, lalu bagaimana saya bisa mendapatkan idToken pengguna jika onIds tidak menyala setiap saat. Di versi sebelumnya hingga 3.2.0 (Pembaruan Utama), onIds dipicu setiap kali saat memulai ulang aplikasi.

Hai teman-teman @slorber @shahchaitanya. Biarkan saya menyalin beberapa kode implementasi saya, mungkin itu akan membantu Anda (saya perlu menambahkan beberapa baris kode yang tidak diperlukan dengan versi sebelumnya).

OneSignal.init('YOUR_APP_ID');
OneSignal.addEventListener('ids', this.onIds);
OneSignal.configure();

Misalnya, saya tidak menggunakan fungsi "init" di versi sebelumnya karena inisialisasi tampaknya dilakukan dari kode Java.

Juga, saya menggunakan npm install git+https://github.com/geektimecoil/react-native-onesignal\#master --save sebagai ketergantungan dan saya menerima tiga acara dengan benar (onIds, diterima, dibuka).

Saya juga menggunakan init dan mengkonfigurasi dan ingat ada masalah dengan id tidak aktif saat tidak memanggil configure

    OneSignal.init(OneSignalAppId, OneSignalSettings);
    OneSignal.addEventListener('received', onReceived);
    OneSignal.addEventListener('opened', onOpened);
    OneSignal.addEventListener('ids', onIds);
    // Quickfix for ids event not firing!
    // See https://github.com/geektimecoil/react-native-onesignal/issues/200#issuecomment-288579373
    OneSignal.configure();
    OneSignal.inFocusDisplaying(inFocusDisplaying);
    OneSignal.setSubscription(true);
    OneSignal.syncHashedEmail(email);
    OneSignal.sendTags(tags);

@ slorber @ eabuslaiman30 Sekarang berfungsi dengan baik. Saya melewatkan untuk menambahkan OneSignal.configure(). Sebelumnya saya tidak membutuhkannya untuk memicu pendengar onIds. Hai @slorber sekarang saya tidak perlu menambahkan tambalan yang Anda sebutkan di atas. @eabuslaiman30 solusi bekerja dengan baik.

Sempurna @shahchaitanya , saya senang itu berhasil!

Kami akan segera merilis rilis resmi termasuk perbaikan ini.

Saya baru-baru ini memperbaiki masalah yang agak signifikan dengan Android SDK, jadi saya menunggu PR itu ditinjau sebelum saya merilis pembaruan asli reaksi resmi.

Terima kasih atas kesabaran Anda semuanya! Sementara itu Anda cukup menggunakan master

@shahchaitanya acara ids dimaksudkan untuk hanya memecat setiap kali ID pengguna atau token push dengan OneSignal berubah. Jika mereka tidak berubah sejak terakhir kali mereka menggunakan aplikasi Anda, acara tidak akan diaktifkan secara default.

Ini membingungkan kode warisan, saya bermaksud untuk memperbaikinya di rilis besar berikutnya agar jauh lebih intuitif.

Anda dapat memaksa mereka untuk menembak dengan memanggil configure() , tetapi saya tidak akan merekomendasikannya. Solusi yang lebih elegan adalah dengan memanggil OneSignal.getPermissionSubscriptionState() yang akan berisi ID OneSignal pengguna

Masalah sekarang harus diperbaiki di 3.2.6 (bersama dengan beberapa hal lainnya). Terima kasih atas kesabaran Anda semuanya!

Hai! Saya masih mendapatkan masalah ini di Android (tidak sepenuhnya memeriksa iOS).

  • Aplikasi dalam fokus - Acara yang dibuka menyala dengan benar
  • Aplikasi ditutup - Acara yang dibuka menyala dengan benar
  • Aplikasi di latar belakang - Acara yang dibuka tidak pernah menyala

Saya menggunakan rilis 3.2.6 dan penyiapan pendengar acara saya adalah...

componentDidMount() {

        OneSignal.init(APP_ID, { kOSSettingsKeyAutoPrompt: true });

        OneSignal.addEventListener('ids', this.onIds);

        OneSignal.addEventListener('opened', (result) => alert('text'));

        OneSignal.inFocusDisplaying(2);

        // OneSignal.setLogLevel(0, 6);

        OneSignal.configure();
}

componentWillUnmount() {
    OneSignal.removeEventListener('ids', this.onIds);
    OneSignal.removeEventListener('opened', (result) => alert('text'));
}

@joefazz Saya tidak dapat mereproduksi masalah Anda, dapatkah Anda mencoba menjalankan yarn remove react-native onesignal dan yarn add react-native-onesignal hanya untuk memastikan itu diperbarui ke 3.2.6? Jika demikian saya akan membuka kembali masalah ini.

Apakah masalah terjadi 100% untuk Anda?

Apakah Anda dapat mereproduksi masalah ini dalam proyek demo kami?

Itu terjadi 100% dari waktu dan masih terjadi setelah menghapus dan membaca.

Saya akan mencoba mereproduksi nanti hari ini dan saya akan mengedit komentar ini dengan temuan saya.

Saya tidak tahu seberapa relevan itu, tetapi dalam proyek yang saya kerjakan, kami menggunakan versi 3.0.9 dan memutakhirkan sepenuhnya ke 3.2.6. Saya menjalankan react-native unlink dan kemudian menautkan kembali, memutakhirkan iOS secara manual dan menghapus semua inisialisasi asli untuk menggunakan metode OneSignal.init().

EDIT: Tidak yakin apa yang terjadi tetapi ini berfungsi 100% di Android sekarang terima kasih atas bantuan Anda, maaf untuk mengomentari masalah yang ditutup

Jika ada yang melihat masalah ini lagi di 3.2.6 atau lebih tinggi, silakan buka edisi baru.

@joefazz Senang mendengarnya! Saya memperbaiki masalah yang menyebabkan masalah awal tetapi sangat mungkin ada semacam kondisi balapan yang terjadi. Jika Anda melihat masalah ini lagi, silakan buka edisi baru

Di aplikasi saya, versi baru memperbaiki masalah saya dan saya tidak melihat perilaku yang dilaporkan oleh @joefazz

Hai semua, saya memiliki masalah yang sama OneSignal.addEventListener('opened', (result) => console.log(result)); tidak dipecat dari peluncuran aplikasi kedua. Dalam mode latar belakang, pemberitahuan pertama adalah acara 'dibuka', matikan aplikasi => dapatkan pemberitahuan => 'dibuka' tidak akan pernah menyala lagi.

hanya android - versi 8
hanya setelah pemberitahuan kedua saat aplikasi berada di latar belakang
reaksi-asli-onesignal - 3.9.1

Saya mengalami masalah yang sama. dibuka tidak akan menelepon ketika aplikasi berada di latar belakang apakah ada perbaikan?

@kostiantyn-solianyk @shrolr ,
Jadi untuk meringkas, acara 'dibuka' tidak menyala saat kedua kali aplikasi dibuka di Android 8.

Acara tradisi tidak digunakan lagi dalam rilis utama yang akan datang (sekarang dalam versi Beta). Saya sarankan untuk bermigrasi ke versi beta dan mencoba mereproduksi masalah.

Jika masalah berlanjut, beri tahu kami dengan membuka edisi baru.

Bersulang

Apakah halaman ini membantu?
0 / 5 - 0 peringkat