14

abrufen Ich habe migriert gcm to fcm für Push-Benachrichtigung. , aber wie bekomme ich Bundle-Daten von RemoteMessage erhalten onMesssageReceived-Methode.Wert von RemoteMessage von FCM onMessageReceived-Methode

Old GCM give bundle data onMessageReceiced method but in FCM there is RemoteMessage data. 

Also bitte sagen Sie mir, wie ich remessemassage parse für erhalten alle Wert der Benachrichtigung.

MY 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" 
] 
} 

Antwort

19

In FCM haben Sie RemoteMessage statt Bundle erhalten.

Unterhalb der Art, wie ich in meiner Anwendung verwendet, wo Daten ist mein RemoteMessage

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

Im Folgenden finden Sie meine Benachrichtigung Daten, die ich vom Server

{ 
    "registration_ids": "", 
    "data": { 
    "questionId": 1, 
    "userDisplayName": "Test", 
    "questionTitle": "Test", 
    "latestComment": "Test" 
    } 
} 

So haben Sie jede analysieren sende und jedes Feld gemäß deiner Antwort. Da ich den Code debugged, erhalten Sie Karte in Ihrer RemoteMessage und werfen diese Felder in geeigneten Datentypen, da alle diese Daten als Zeichenfolge kommen.

+0

Danke für Ihre Antwort, aber meine anderen Daten unter Benachrichtigungsobjekt nicht in Datenobjekt dann wie bekomme ich es –

+0

Wie Sie bereits im Kommentar erwähnt haben, erhalten Sie Ihr Ergebnis von remoteMessage. Benachrichtigung erhalten(). Kannst du das versuchen .. –

25

Hier ist der Code-Schnipsel, die 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()); 
      } 
     } 

Vergewissern Sie sich vom Server, den Sie Daten in der richtigen Format, dh in den „Daten“ Schlüssel

hier senden ist die Demo Json Datei

{ 
    "to": "registration_ids", 
    "data": { 
    "key": "value", 
    "key": "value", 
    "key": "value", 
    "key": "value" 
    } 
} 
+1

Danke für Ihre Antwort aber Meine anderen Daten unter Benachrichtigungsobjekt nicht in Datenobjekt dann wie bekomme ich es. –

+3

'remoteMessage.getData()' gibt leere Array zurück –

Verwandte Themen