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