0
votes

Android: le message push de la fonction Firebase Cloud ne redirige pas vers la méthode onMessageReceived (FirebaseMessagingService)

Je suis assez nouveau en Javascript et grâce à l'aide de Google, j'ai écrit ci-dessous une fonction dans index.js pour envoyer un message push à mon application lorsque la table Firestore sera mise à jour.

Index.js strong >

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.sendNotificationToFCMToken = functions.firestore.document('REQ/{mId}/Req/{bId}').onWrite(async (event) => {
//const uid = event.after.get('userUid');
const title = event.after.get('personName');
const content = event.after.get('content');
const fcmToken = event.after.get('token');
//let userDoc = await admin.firestore().doc(`users/${uid}`).get();
//let fcmToken = userDoc.get('token');

var message = {
    notification: {
        title: title,
        body: content,
    },
    token: fcmToken,
}

let response = await admin.messaging().send(message);
console.log(response);
});

La fonction ci-dessus fonctionne correctement et envoie un message push à l'application et affiche la notification. Mais le problème est que cela devrait arriver à l'application dans la classe FirebaseMessagingService grâce à laquelle je peux la personnaliser.


2 commentaires

Les messages de notification sont gérés par la barre de notification système lorsque votre application n'est pas au premier plan. Si vous souhaitez toujours que votre application gère les messages, envoyez plutôt des messages de données.


@Michael Cela n'entre pas non plus lorsque l'application est au premier plan. Cela semble être quelque chose que je dois ajouter dans ce code js, ce que je ne peux pas en raison de ma connaissance en JavaScript.


3 Réponses :


1
votes

Firebase Cloud Messaging peut être utilisé pour envoyer deux types de messages. À partir de la documentation sur les types de messages :

  1. Messages de notification, parfois considérés comme des "messages d'affichage". Ceux-ci sont gérés automatiquement par le SDK FCM.
  2. Messages de données, qui sont gérés par l'application client.

Utilisez des messages de notification lorsque vous souhaitez que FCM gère l'affichage d'une notification au nom de votre application cliente. Utilisez les messages de données lorsque vous souhaitez traiter les messages sur votre application cliente.

Donc, si vous voulez que votre code d'application traite le message, vous devez envoyer un message de données .


0 commentaires

1
votes

0 commentaires

1
votes

Deux types:

1.Message de notification:

var message = {
  data: {
    score: '850',
    time: '2:45'
  },
  token: registrationToken
};

Celui-ci spécifie les paires clé-valeur prédéfinies visibles par l'utilisateur de la charge utile de notification. FCM affiche automatiquement le message sur les appareils des utilisateurs finaux au nom de l'application cliente. Les messages de notification ont un ensemble prédéfini de clés visibles par l'utilisateur.

2.Message de données:

var message = {
    notification: 
    {
        title: 'This is title',
        body: 'This is body!' 
    },
    condition: condition
};

Celui-ci spécifie les paires clé-valeur personnalisées du la charge utile du message. L'application cliente est responsable du traitement des messages de données. Les messages de données n'ont que des paires valeur / clé personnalisées. (Voir https://stackoverflow.com/a/39149287/9391162 pour plus de détails, je l'ai utilisé).

Donc, lorsque vous voulez le gérer dans le client, vous utiliserez des messages de données .

Ceci lien montre l'envoi de la notification dans le back-end, Node.js l'est également inclus.


0 commentaires