web-dev-qa-db-fra.com

Comment trouver l'ID de canal de notification de RemoteMessage

J'ai enregistré un canal de notification dans l'application Android à la suite de GoogleSamples https://github.com/googlesamples/Android-NotificationChannels

Cependant, comment puis-je obtenir l'ID du canal de notification de RemoteMessage afin de pouvoir le définir sur NotificationBuilder.

public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService {

@Override
public void onMessageReceived(RemoteMessage remoteMessage) 
{
//int id = remoteMessage.getNotificationChannel(); // -something like this I could not find
}

J'ai trouvé cette valeur dans l'objet RemoteMessage

 enter image description here

value [3] = "notification_channel_system", afin que je puisse définir la valeur sur Notification push de firebase à l'aide de la valeur de clé Android_channel_idhttps://firebase.google.com/docs/cloud-messaging/http-server-ref but I ne peut pas l'obtenir lorsqu'il est reçu par l'appareil.

Comment peut-on obtenir cet identifiant de PushNotification et le définir comme générateur de notification?

12
Malbac

L'objet RemoteMessage contient le canal dans sa Bundle. Cependant, getData() supprime tout ce qui commence par, entre autres, gcm.. Malheureusement, cela inclut la clé de canal, qui est gcm.notification.Android_channel_id.

Pour ce qui me concerne lorsque la notification Push est reçue lorsque l'application est au premier plan, je voulais tout de même l'afficher dans le système, à l'aide de l'ID de canal envoyé par le serveur.

Je suis capable d'y parvenir (certes un peu hacky) avec un simple fichier de deux lignes:

package com.google.firebase.messaging

fun RemoteMessage.getChannel() : String? = zzdu.getString("gcm.notification.Android_channel_id")

Ci-dessus concerne la version de messagerie Firebase 17.4.0. La réponse originale pour la messagerie firebase 17.3.4 est la suivante:

package com.google.firebase.messaging

fun RemoteMessage.getChannel() : String? = zzds.getString("gcm.notification.Android_channel_id")
0
skylerb