KasparTr
KasparTr

Reputation: 2458

Display firebase notification data-message on Android tray

I need to use non-collapsible notification by Firebase. For that I am using data-message like this:

{
 "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
 "data" : {
   "Nick" : "Mario",
   "body" : "great match!",
   "Room" : "PortugalVSDenmark"
  },
}

This message is interpreted in the onMessageReceived() method. I still want to display this data-message in the tray just like notification-messages are displayed by the system automatically.

How to I achieve this? I cannot find documentation on this.

Thanks!

Upvotes: 0

Views: 1250

Answers (1)

AL.
AL.

Reputation: 37778

You can retrieve the values from your data payload in onMessageReceived() by calling RemoteMessage.getData(), then .get("<KEY_HERE>"). Like so:

public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
        Log.d(TAG, "onMessageReceived()");

        // Check if message contains a data payload.
        if (remoteMessage.getData().size() > 0) {
            Log.d(TAG, "Message data payload: " + remoteMessage.getData());

            String dataTitle = remoteMessage.getData().get("data_title");
            String dataBody = remoteMessage.getData().get("data_body");

            sendNotification(dataTitle, dataBody);
}

You have to then build and display the Notification yourself. Like so:

private void sendNotification(String title, String body) {
        Notification notif = new NotificationCompat.Builder(this)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle(title)
                .setContentText(body)
                .build();

        NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
        notificationManager.notify(0, notif);
}

Upvotes: 4

Related Questions