Отображать данные уведомления firebase-сообщение в трее Android

#android #push-notification #firebase-cloud-messaging #android-notifications #android-push-notification

#Android #firebase #firebase-облако-обмен сообщениями

Вопрос:

Мне нужно использовать нескладываемое уведомление Firebase. Для этого я использую данные-сообщение, подобное этому:

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

Это сообщение интерпретируется методом onMessageReceived().
Я все еще хочу отображать это сообщение-данные в трее точно так же, как сообщения-уведомления отображаются системой автоматически.

Как мне этого добиться? Я не могу найти документацию по этому поводу.

Спасибо!

Комментарии:

1. это json так что проанализируйте это

Ответ №1:

Вы можете извлечь значения из вашей полезной нагрузки данных в, onMessageReceived() вызвав RemoteMessage.getData() , затем .get("<KEY_HERE>") . Вот так:

 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);
}
  

Затем вы должны создать и отобразить уведомление самостоятельно. Вот так:

 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);
}