14

Ho migrato gcm to fcm per il messaggio di notifica push. ma come ottenere i dati in bundle da RemoteMessage ricevuto sul metodoMesssageReceived.Ottieni valore da RemoteMessage da FCM onMessageReceived metodo

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

Quindi, per favore dimmi come analizzo remotemessage per ottenere tutto il valore della notifica.

MY Paghe

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

risposta

19

In FCM è stato ricevuto RemoteMessage anziché Bundle.

Di seguito è il modo che ho usato nella mia applicazione in cui i dati è il mio 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(); 

Qui di seguito è il mio dati di notifica che ti mando dal server di

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

Così si deve analizzare ogni e ogni campo secondo la tua risposta. Dato che ho eseguito il debug del codice, riceverai la mappa nel tuo RemoteMessage e inserirai questi campi in opportuni tipi di dati, dato che tutti i dati vengono forniti come stringa.

+0

Grazie per la risposta, ma I miei altri dati oggetto di notifica non in oggetto dati, quindi come posso ottenerlo –

+0

Come hai già detto nel commento che otterrai il risultato da remoteMessage. ottenere la notifica(). Puoi provarlo ... –

25

Ecco il frammento di codice che è praticamente auto esplicativo.

Si ottiene i dati in forma di mappa

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

Fai Certo da un server che si sta inviando i dati in formato corretto vale a dire i "dati" chiave

qui è il file JSON demo

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

Grazie per la risposta, ma i miei altri dati in oggetto di notifica non in oggetto dati, quindi come posso ottenerlo. –

+3

'remoteMessage.getData()' restituisce matrice vuota –