4 votes

Cordova-Plugin-Firebase : lorsque l'application passe de OFF à ACTIVE, onNotificationOpen() ne fonctionne pas sous Android.

J'ai implémenté le Cordova-Plugin-Firebase dans un projet Ionic2 sur un appareil Android.

J'ai suivi les directives et ça marche. Pour ce qui est de la fonction onNotificationOpen(), comme il est expliqué dans le manuel de l'utilisateur, elle ne fonctionne pas. doc du plugin :

L'application est en arrière-plan :

  • L'utilisateur reçoit le message de notification dans la barre de notification de son appareil.

  • L'utilisateur appuie sur la notification et l'application s'ouvre

  • L'utilisateur reçoit les données de notification dans le callback JavaScript.

Si l'application est fermée (pas en arrière-plan), si j'envoie une notification push, elle le fait :

  • L'utilisateur reçoit le message de notification dans la barre de notification de son appareil.

Ensuite, je touche la notification dans le panneau qui affiche toutes les notifications, l'application se charge et s'ouvre.

Si l'application est en arrière-plan, la fonction suivante déclenchera certains événements lorsque l'application occupera le premier plan de l'écran :

Firebase.onNotificationOpen().subscribe(
       (res) => { console.info(res)},
       (err) => { console.info(err)},
       () => {console.log("completed)}
);

Mais lorsque l'application est éteinte Il semble que cette fonction, ci-dessus, ne soit pas configurée pour être exécutée à l'ouverture de l'application. Par conséquent, elle n'indique pas que l'application a été ouverte en tapant sur une notification. affichée sur le tableau de bord des notifications.

Est-ce normal ? Si oui, existe-t-il une documentation expliquant pourquoi ? détecter par le biais d'un événement qu'un message de notification a été tapé pour ouvrir le site App de OFF à ACTIVE ? Si non, aurait-on une idée de ce qui pourrait être mon erreur ?

0voto

Nick Cardoso Points 4864

Une notification push (comme un lien profond) doit être traitée quelque part dans votre propre code - quelque part, vous devez décider quelle activité la notification ouvre et ce qui se passe dans ce cas. Vous ne pouvez donc pas laisser à Firebase le soin de détecter cela pour vous.

Lorsque l'application est morte, le fait de cliquer sur la notification push envoie un Intent avec les données reçues à votre application. C'est l'intention où vous pouvez la traiter (par exemple dans onStart/Resume()). Si vous enregistrez l'intention disponible lorsque votre application est lancée à partir de la notification, vous verrez qu'elle contient quelque chose de similaire à ce qui suit :

Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.my.package cmp=com.my.package/.MyMainActivity (has extras) }
Extras { 
   google.sent_time > 1490275998196, 
   from > 9994599943, 
   google.message_id > 0:14902799999965%346177c211bbbb7c2, 
   collapse_key > com.my.package 
}

Cela signifie que vous pouvez faire quelque chose comme

if (getIntent() != null && getIntent().getExtras() != null) {
    //identify whether this was a push notification intent
    if (getIntent().getExtras().get("google.message_id") != null) { 
        //Here you can do the same things you do when opened from background
        console.log("completed"");
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X