remotemessage remote onmessagereceived getnotification fcm java android google-cloud-messaging android-notifications firebase-cloud-messaging

java - onmessagereceived - remote message firebase android



Obtenga valor de RemoteMessage de FCM en el método OnMessageReceived (2)

Aquí está el fragmento de código que es bastante autoexplicativo.

Obtienes los datos en la forma del Mapa.

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

Asegúrese de que desde el servidor está enviando los datos en el formato correcto, es decir, en la tecla "datos"

Aquí está el archivo demo de Json

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

He migrado gcm to fcm para el mensaje de notificación de inserción. pero cómo recibí los datos del paquete de RemoteMessage recibió el método onMesssageReceived.

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

Así que, por favor, dígame cómo analizo remotemessage para obtener todo el valor de la notificación.

Mi pago

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


En FCM recibiste RemoteMessage en lugar de Bundle.

A continuación se muestra la forma en que utilicé en mi aplicación donde los datos son mi 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();

A continuación se muestran mis datos de notificación que estoy enviando desde el servidor

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

Así que tienes que analizar cada campo según tu respuesta. Como he depurado el código, recibirá un mapa en su RemoteMessage y convertirá esos campos en los tipos de datos adecuados, ya que todos esos datos vienen como una cadena.