Ich bin umgezogen gcm to fcm
für Push-Benachrichtigung. aber wie bekomme ich Bündeldaten von RemoteMessage erhalten onMesssageReceived-Methode.
Old GCM give bundle data onMessageReceiced method but in FCM there is RemoteMessage data.
Sagen Sie mir bitte, wie ich die Remotemessage analysiere, um den gesamten Wert der Benachrichtigung zu erhalten.
MEINE PAYROL
{
"collapse_key":"score_update",
"priority":"high",
"content_available":true,
"time_to_live":108,
"delay_while_idle":true,
"data":
{
"message": "Message for new task",
"time": "6/27/2016 5:24:28 PM"
},
"notification": {
"sound": "simpleSound.wav",
"badge": "6",
"title": "Test app",
"icon": "myicon",
"body": "hello 6 app",
"notification_id" : "1140",
"notification_type" : 1,
"notification_message" : "TEST MESSAGE",
"notification_title" : "APP"
},
"registration_ids": ["cRz9SJ-gGuo:APA91bFJPX7_d07AR7zY6m9khQro81GmSX-7iXPUaHqqcOT0xNTVsOZ4M1aPtoVloLNq71-aWrMCpIDmX4NhMeDIc08txi6Vc1mht56MItuVDdA4VWrnN2iDwCE8k69-V8eUVeK5ISer"
]
}
In FCM haben Sie RemoteMessage anstelle von Bundle erhalten.
Unten ist die Art und Weise, wie ich in meiner Anwendung verwendet habe, in der Daten meine RemoteMessage sind
int questionId = Integer.parseInt(data.get("questionId").toString());
String questionTitle = data.get("questionTitle").toString();
String userDisplayName = data.get("userDisplayName").toString();
String commentText = data.get("latestComment").toString();
Unten sind meine Benachrichtigungsdaten aufgeführt, die ich vom Server sende
{
"registration_ids": "",
"data": {
"questionId": 1,
"userDisplayName": "Test",
"questionTitle": "Test",
"latestComment": "Test"
}
}
Sie müssen also jedes einzelne Feld gemäß Ihrer Antwort analysieren. Nach dem Debuggen des Codes erhalten Sie eine Karte in Ihrer RemoteMessage und wandeln diese Felder in die entsprechenden Datentypen um, da alle diese Daten als Zeichenfolge vorliegen.
Hier ist das Code-Snippet, das ziemlich selbsterklärend ist.
Sie erhalten die Daten in Form der Karte
public void onMessageReceived(RemoteMessage remoteMessage)
{
Log.e("dataChat",remoteMessage.getData().toString());
try
{
Map<String, String> params = remoteMessage.getData();
JSONObject object = new JSONObject(params);
Log.e("JSON_OBJECT", object.toString());
}
}
Stellen Sie sicher, dass Sie vom Server aus Daten im richtigen Format senden, d. H. Im "Daten" -Schlüssel
hier ist die Demo-Json-Datei
{
"to": "registration_ids",
"data": {
"key": "value",
"key": "value",
"key": "value",
"key": "value"
}
}