React-native-onesignal: Les événements onOpened/onReceived ne se déclenchent pas sur Android

Créé le 9 juil. 2018  ·  35Commentaires  ·  Source: OneSignal/react-native-onesignal

La description:
Salut tout le monde. J'ai des problèmes avec les événements onOpened/onReceived sur Android. Le comportement est différent sur l'émulateur et sur un appareil réel, mais le message push exact est délivré dans les deux cas.

Sur émulateur :

  1. Premier plan - l'événement onReceived est invoqué, onOpened est invoqué uniquement lorsque push est tapé (correct)
  2. Arrière-plan actif - aucun déclenché (incorrect)
  3. Arrière-plan inactif (l'application est fermée) - onOpened n'est appelé que lorsque le push est appuyé (correct)

Sur un appareil réel :

  1. Premier plan - aucun tir du tout (incorrect)
  2. Arrière-plan actif - aucun déclenché (incorrect)
  3. Arrière-plan inactif (l'application est fermée) - onOpened n'est appelé que lorsque le push est appuyé (correct)

Environnement

  1. réagir-natif-unsignal : "3.2.4"
  2. natif de réaction : "0.50.4"
  3. compileSdkVersion : "27"
  4. buildToolsVersion : "27.0.3"
  5. niveau : "4.1"

Étapes pour reproduire le problème :
Impossible de fournir des étapes à reproduire en raison de la politique de confidentialité de mon entreprise.

Rien d'autre:
android/build.gradle

```// Fichier de construction de niveau supérieur où vous pouvez ajouter des options de configuration communes à tous les sous-projets/modules.

script de construction {
dépôts {
jcenter()
Google()
}
dépendances {
chemin de classe 'com.android.tools. build:grade :3.0.1'

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

}

tous les projets {
dépôts {
maven { url " https://jitpack.io " } // utilisé pour MPAndroidChart
mavenLocal()
Google()
jcenter()
maven {
// Tout React Native (JS, sources Obj-C, binaires Android) est installé à partir de npm
url "$rootDir/../node_modules/react-native/android"
}
}
}

`android/app/build.gradle`

appliquer le plugin : 'com.onesignal.androidsdk.onesignal-gradle-plugin'
plugin d'application : "com.android.application"

importer com.android.build.OutputFile

script de construction {
dépôts {
maven { url ' https://plugins.gradle.org/m2/ ' } // Portail de plugin Gradle
}
dépendances {
chemin de classe 'gradle.plugin.com. onesignal:onesignal-gradle-plugin :[0.10.0, 0.99.99]'
}
}

appliquer le plugin : 'com.onesignal.androidsdk.onesignal-gradle-plugin'

/**

  • Le fichier react.gradle enregistre une tâche pour chaque variante de build (par exemple bundleDebugJsAndAssets
  • et bundleReleaseJsAndAssets).
  • Ceux-ci appellent essentiellement react-native bundle avec les bons arguments lors de la construction d'Android
  • cycle. Par défaut, bundleDebugJsAndAssets est ignoré, car en mode debug/dev nous préférons charger le
  • bundle directement depuis le serveur de développement. Ci-dessous vous pouvez voir toutes les configurations possibles
  • et leurs défauts. Si vous décidez d'ajouter un bloc de configuration, assurez-vous de l'ajouter avant le
  • Ligne apply from: "../../node_modules/react-native/react.gradle" .
    *
  • projet.ext.react = [
  • // le nom du fichier d'actif généré contenant votre bundle JS
  • bundleAssetName : "index.android.bundle",
    *
  • // le fichier d'entrée pour la génération de bundle
  • fichier d'entrée : "index.android.js",
    *
  • // s'il faut regrouper JS et les actifs en mode débogage
  • bundleInDebug : faux,
    *
  • // s'il faut regrouper JS et les actifs en mode de publication
  • bundleInRelease : vrai,
    *
  • // s'il faut regrouper JS et les actifs dans une autre variante de construction (si configurée).
  • // Voir http://tools.android.com/tech-docs/new-build-system/user-guide#TOC -Build-Variants
  • // La propriété de configuration peut être dans les formats suivants
  • // 'bundleIn${productFlavor}${buildType}'
  • // 'bundleIn${buildType}'
  • // bundleInFreeDebug : vrai,
  • // bundleInPaidRelease : vrai,
  • // bundleInBeta : vrai,
    *
  • // s'il faut désactiver le mode de développement dans les variantes de construction personnalisées (par défaut uniquement désactivé dans la version)
  • // par exemple : pour désactiver le mode dev dans le type de build intermédiaire (si configuré)
  • devDisabledInStaging : vrai,
  • // La propriété de configuration peut être dans les formats suivants
  • // 'devDisabledIn${productFlavor}${buildType}'
  • // 'devDisabledIn${buildType}'
    *
  • // la racine de votre projet, c'est-à-dire où vit "package.json"
  • racine: "../../",
    *
  • // où placer l'actif du bundle JS en mode débogage
  • jsBundleDirDebug : "$buildDir/intermediates/assets/debug",
    *
  • // où placer l'actif du bundle JS en mode de publication
  • jsBundleDirRelease : "$buildDir/intermediates/assets/release",
    *
  • // où placer les ressources drawable / React Native assets, par exemple ceux que vous utilisez via
  • // nécessite('./image.png')), en mode débogage
  • resourcesDirDebug : "$buildDir/intermediates/res/merged/debug",
    *
  • // où placer les ressources drawable / React Native assets, par exemple ceux que vous utilisez via
  • // nécessite('./image.png')), en mode release
  • resourcesDirRelease : "$buildDir/intermediates/res/merged/release",
    *
  • // par défaut, les tâches de gradle sont ignorées si aucun des fichiers ou actifs JS ne change ; ça signifie
  • // que nous ne regardons pas les fichiers dans android/ ou ios/ pour déterminer si les tâches sont à la hauteur
  • // Date; si vous avez d'autres dossiers que vous souhaitez ignorer pour des raisons de performances (gradle
  • // indexe l'arbre entier), ajoutez-les ici. Alternativement, si vous avez des fichiers JS dans Android/
  • // par exemple, vous voudrez peut-être le supprimer d'ici.
  • inputExcludes : ["android/ ", "ios/ "],
    *
  • // remplace quel nœud est appelé et avec quels arguments supplémentaires
  • nodeExecutableAndArgs : ["nœud"],
    *
  • // fournit des arguments supplémentaires au conditionneur
  • extraPackagerArgs : []
  • ]
    */

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

appliquer depuis : "../../node_modules/react-native/react.gradle"

/**

  • Définissez-le sur true pour créer deux fichiers APK distincts au lieu d'un :

    • Un APK qui ne fonctionne que sur les appareils ARM


    • Un APK qui ne fonctionne que sur les appareils x86

  • L'avantage est que la taille de l'APK est réduite d'environ 4 Mo.
  • Téléchargez tous les APK sur le Play Store et les gens téléchargeront
  • le bon en fonction de l'architecture CPU de leur appareil.
    */
    def enableSeparateBuildPerCPUArchitecture = false

/**

  • Exécutez Proguard pour réduire le bytecode Java dans les versions de version.
    */
    def enableProguardInReleaseBuilds = false

Android {
compileSdkVersion 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
        }
    }
}

}

dépendances {
compiler (projet(':react-native-onesignal')){
groupe d'exclusion : "com.google.android.gms"
}
compiler ("com.google.android.gms:play-services-base:12.0.1") {
forcer = vrai ;
}
compiler le projet(':react-native-sound')
compiler le projet(':react-native-audio')
compiler le projet(':react-native-fetch-blob')
compiler le projet(':react-native-fs')
compiler le projet(':react-native-geocoder')
compiler le projet(':react-native-image-crop-picker')
compiler le projet(':react-native-version-check')
compiler le projet(':react-native-charts-wrapper')
compiler le projet(':react-native-spinkit')
compiler le projet(':react-native-svg')
compiler le projet(':react-native-maps')
compiler fileTree(dir : "libs", inclure : ["*.jar"])
compiler "com.android.support:appcompat-v7 : 23.0.1 "
compile "com.facebook.react :react-native :+" // Depuis node_modules
}

// Exécutez ceci une fois pour pouvoir exécuter l'application avec BUCK
// met toutes les dépendances de compilation dans le dossier libs pour que BUCK les utilise
tâche copyDownloadableDepsToLibs(type : Copy) {
depuis configurations.compile
dans 'libs'
}

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

package com.binomysteryshopper ;

importer android.app.Application ;

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

importer java.util.Arrays ;
importer java.util.List ;

la classe publique MainApplication étend l'application implémente ReactApplication {

privé final ReactNativeHost mReactNativeHost = nouveau ReactNativeHost(this) {
@Passer outre
public booléen getUseDeveloperSupport() {
renvoie 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";
}

} ;

@Passer outre
public ReactNativeHost getReactNativeHost() {
retourner mReactNativeHost ;
}

@Passer outre
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* exopackage natif */ false);
}
}

`AndroidManifest.xml`

package="com.binomysteryshopper">









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

android:name=".MainApplication"
android:allowBackup="true"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:largeHeap="true"
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`

composantWillMount() {
OneSignal.init(ONESIGNAL_APP_ID, {
kOSSettingsKeyAutoPrompt : vrai,
kOSSettingsKeyInAppLaunchURL : faux,
kOSSSettingsKeyPromptBeforeOpeningPushURL : vrai,
})
Affichage OneSignal.inFocus(2)

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

}

componentWillUnmount() {
OneSignal.removeEventListener('reçu', this.onPushNotificationReceived)
OneSignal.removeEventListener('ouvert', this.onPushNotificationOpened)
}

onPushNotificationReceived(notification) {
Alert.alert('onReceived') // pour les tests sur un appareil réel
}

onPushNotificationOpened(openResult) {
Alert.alert('onOpened') // pour les tests sur un appareil réel
}
```

Commentaire le plus utile

@sofianegargouri Voici le PR : https://github.com/geektimecoil/react-native-onesignal/pull/592

Nous publierons une mise à jour demain ou après-demain.

Tous les 35 commentaires

Sur IOS ça marche parfaitement. Malheureusement, je ne peux pas fournir de journaux d'Android Logcat, car je n'ai pas de véritable appareil. Je testais sur l'appareil de mon ami lointain grâce à TeamViewer.

J'ai aussi essayé de OneSignal.setLogLevel(0, 6) sur un vrai appareil. Mais aucune erreur n'a été trouvée, toutes les requêtes ont réussi, seuls les événements n'ont pas été déclenchés.

Salut @Ble3k , nous avons été très occupés à travailler sur un nouveau SDK Flutter récemment et nous n'avons pas encore eu le temps d'enquêter sur votre problème, mais j'enquêterai demain et je vous répondrai sous peu, excusez-moi pour le retard !

Salut,

Je voulais juste dire que je vois le même comportement sur 3.2.5 sur un appareil de développement. Bizarre parce que je n'ai rien changé récemment et je suis presque sûr que cela a fonctionné il y a quelques jours, car mes poussées ciblées sont affichées sous forme de toasts intégrés à l'application. Je me souviens les avoir testés et cela fonctionnait.

Je n'enquêterai pas plus loin car nous avons décidé de passer aux notifications push normales même lorsque l'application est ciblée

@ Nightsd01 Thx, attendra votre enquête.

Sur Android confronté à un retard dans la réception des notifications, testé sur mon téléphone Android et reçu une notification après 30 à 40 minutes, testé plusieurs fois

Une mise à jour pour ceci? J'ai le même problème sur un appareil Android (Samsung Galaxy S7).

Aucun des événements onOpened ou onReceived n'est déclenché, cependant, la notification est en cours de réception. Nous devons pouvoir diriger l'utilisateur vers un écran spécifique lorsque l'événement onOpened est déclenché.

Quelqu'un a-t-il un problème avec les événements (reçus, ouverts) qui ne sont pas déclenchés après le rechargement de l'application Android native de réaction en appuyant deux fois sur R ou en utilisant le package react-native-restart.

@ackosumane J'utilise en fait Expo et Updates.reload() très souvent dans mon workflow de développement.

Et tu as raison :

  • Je suis en mesure de déclencher les rappels au premier démarrage de l'application
  • Je ne vois pas les rappels déclenchés après le premier rechargement de l'application

@ Nightsd01 Il semble donc que l'intégration Android OneSignal RN ne supporte actuellement pas très bien les rechargements d'applications. Ce n'est pas aussi percutant que je le pensais car la plupart du temps, l'utilisateur ne rechargera pas l'application, mais il existe des cas de production dans lesquels nous voulons que l'utilisateur recharge l'application (mises à jour OverTheAir comme Expo/CodePush, ou déconnexion de l'utilisateur ?). Dans de tels cas, ce serait formidable qu'après un rechargement, les poussées ne soient pas cassées ;)

@Nightsd01 Salut, des mises à jour ?

Bonjour, je suis également confronté au même problème. Des solutions pour cela ???

En tant que mise à jour sur ce problème : nous prévoyons de résoudre ce problème dans la prochaine mise à jour !

@Nightsd01 Une date ? Y a-t-il une branche que nous pouvons bifurquer avec le correctif ?

@sofianegargouri Voici le PR : https://github.com/geektimecoil/react-native-onesignal/pull/592

Nous publierons une mise à jour demain ou après-demain.

merci @ Nightsd01 , ce problème peut être fermé je suppose

pouvez-vous publier une nouvelle version de npm avec le correctif, s'il vous plaît ?

Pour tous ceux qui sont bloqués avec ce problème, le code de master fonctionne bien maintenant.

Exécutez simplement ce qui suit :

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

@ eabuslaiman30 Toujours confronté à un problème. J'utilise git+ https://github.com/geektimecoil/react-native-onesignal#master comme vous l'avez mentionné ci-dessus. Toujours aucun des événements n'est déclenché dans Android. Quelqu'un peut-il suggérer quelle dernière version est stable ? Auparavant, j'utilisais la version 3.0.5 qui fonctionnait bien, sauf que l'application est tuée et que la notification n'est pas reçue dans Android 8.0 (Oreo). Pour résoudre ce problème, je mets à jour la dernière version et j'obtiens cette erreur.

@ eabuslaiman30 @ Nightsd01 J'ai aussi essayé et comme @shahchaitanya, je suis toujours confronté au problème.

J'ai fait un PR qui semble réparer les auditeurs qui ne s'abonnent plus : https://github.com/geektimecoil/react-native-onesignal/pull/593

@shahchaitanya , vous pouvez modifier le code Java du projet local avec ce petit changement et cela devrait résoudre temporairement votre problème.

Hey @slorber Votre solution déclenche les méthodes onOpened et onReceived. Mais l'événement onIds n'est pas encore déclenché ? Avez-vous vérifié que l'événement onIds est déclenché ou non dans votre code ? Je pensais rester fidèle à la version 3.0.5 de react-native-onesignal jusqu'à ce que la dernière version devienne stable.

Je viens de tester et les 3 rappels se déclenchent au redémarrage de l'application pour moi, en commençant par onIds.

Même si onIds ne se déclenche pas, ce ne serait pas un gros problème pour moi, car il est peu probable que les identifiants changent lors des redémarrages et ils ont déjà été envoyés à mon backend.

@slorber Pour moi, c'est un gros problème si onIds ne s'est pas déclenché lors du redémarrage d'une application. Je stocke idToken dans le stockage local et le backend également. Lors de la déconnexion, je l'ai supprimé du backend et, d'une manière ou d'une autre, si l'utilisateur efface le stockage local, comment puis-je obtenir l'idToken d'un utilisateur si onIds ne s'est pas déclenché à chaque fois. Dans la version précédente jusqu'à 3.2.0 (mise à jour majeure), onIds est déclenché à chaque fois lors du redémarrage d'une application.

Salut les gars @slorber @shahchaitanya. Permettez-moi de copier une partie de mon code d'implémentation, cela vous aidera peut-être (j'avais besoin d'ajouter quelques lignes de code qui n'étaient pas nécessaires avec une version précédente).

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

Par exemple, je n'utilisais pas la fonction "init" dans les versions précédentes car l'initialisation se faisait apparemment à partir du code Java.

De plus, j'utilise npm install git+https://github.com/geektimecoil/react-native-onesignal\#master --save comme dépendance et je reçois correctement trois événements (onIds, reçu, ouvert).

J'utilise également init et configure et je me souviens qu'il y avait un problème avec les identifiants qui ne se déclenchaient pas lorsque je n'appelais pas 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 Maintenant ça marche bien. J'ai manqué d'ajouter OneSignal.configure(). Auparavant, je n'en avais pas besoin pour déclencher l'écouteur onIds. Hey @slorber maintenant je n'ai pas besoin d'ajouter ce patch que vous avez mentionné ci-dessus. La solution @ eabuslaiman30 fonctionne parfaitement.

Parfait @shahchaitanya , je suis content que ça ait fonctionné !

Nous publierons bientôt une version officielle incluant ce correctif.

J'ai récemment corrigé un problème quelque peu important avec le SDK Android, j'attends donc que ce PR soit examiné avant de publier une mise à jour officielle réactive.

Merci à tous pour votre patience! En attendant, vous pouvez simplement utiliser master

@shahchaitanya l'événement ids est destiné à se déclencher simplement chaque fois que l'ID de l'utilisateur ou le jeton push avec OneSignal change. S'ils n'ont pas changé depuis la dernière fois qu'ils ont utilisé votre application, les événements ne se déclencheront pas par défaut.

C'est un code hérité déroutant, j'ai l'intention de le refactoriser dans la prochaine version majeure pour qu'il soit beaucoup plus intuitif.

Vous pouvez les forcer à tirer en appelant configure() , mais je ne le recommanderais pas. Une solution plus élégante consiste à appeler OneSignal.getPermissionSubscriptionState() qui contiendra l'identifiant OneSignal de l'utilisateur

Le problème devrait maintenant être résolu dans 3.2.6 (ainsi que plusieurs autres choses). Merci à tous pour votre patience!

Salut! J'ai toujours ce problème sur Android (iOS non entièrement vérifié).

  • Application ciblée - L'événement ouvert se déclenche correctement
  • Application rejetée - L'événement ouvert se déclenche correctement
  • Application en arrière-plan - L'événement ouvert ne se déclenche jamais

Je suis sur la version 3.2.6 et la configuration de mon écouteur d'événements est ...

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 Je ne suis pas en mesure de reproduire votre problème, pouvez-vous essayer d'exécuter yarn remove react-native onesignal et yarn add react-native-onesignal juste pour vous assurer qu'il est mis à jour vers 3.2.6 ? Si c'est le cas, je rouvrirai le sujet.

Le problème se produit-il 100 % du temps pour vous ?

Pouvez-vous reproduire ce problème dans notre projet de démonstration ?

Cela se produit 100% du temps et se produit toujours après la suppression et la lecture.

Je vais essayer de reproduire un peu plus tard dans la journée et j'éditerai ce commentaire avec mes conclusions.

Je ne sais pas à quel point c'est pertinent, mais dans le projet sur lequel je travaille, nous étions sur la version 3.0.9 et mis à niveau jusqu'à la 3.2.6. J'ai exécuté un lien réactif natif, puis reconnecté, mis à jour iOS manuellement et supprimé toute l'initialisation native pour utiliser la méthode OneSignal.init().

EDIT : Je ne sais pas ce qui s'est passé, mais cela fonctionne à 100 % du temps sur Android maintenant, merci pour votre aide, désolé de commenter un problème clos 😅

Si quelqu'un voit à nouveau ce problème dans la version 3.2.6 ou supérieure, n'hésitez pas à ouvrir un nouveau problème.

@joefazz Heureux de l'entendre! J'ai résolu le problème à l'origine du problème initial, mais il est tout à fait possible qu'il y ait une sorte de condition de concurrence. Si vous voyez à nouveau ce problème, n'hésitez pas à ouvrir un nouveau sujet

Dans mon application, la nouvelle version corrige mes problèmes et je ne vois pas le comportement signalé par @joefazz

Salut à tous, j'ai le même problème OneSignal.addEventListener('opened', (result) => console.log(result)); n'est pas déclenché à partir du deuxième lancement de l'application. En mode arrière -plan, la première notification reçoit l'événement 'opened', tuez l'application => get notification => 'opened' ne se déclenchera plus jamais.

seulement android - version 8
seulement après la deuxième notification lorsque l'application était en arrière-plan
réagir-natif-unsignal - 3.9.1

J'ai le même problème. ouvert n'appellera pas lorsque l'application est en arrière-plan, y a-t-il un correctif

@kostiantyn-solianyk @shrolr ,
Donc, pour résumer, l'événement 'opened' ne se déclenche pas la deuxième fois que l'application est ouverte dans Android 8.

Les événements traditionnels sont obsolètes dans la prochaine version majeure (maintenant en version bêta). Je recommande de migrer vers la version bêta et d'essayer de reproduire le problème.

Si le problème persiste, merci de nous le signaler en ouvrant un nouveau numéro.

Acclamations

Cette page vous a été utile?
0 / 5 - 0 notes