web-dev-qa-db-fra.com

Obtenir de la valeur de RemoteMessage à partir de la méthode FCM onMessageReceived

J'ai migré gcm to fcm pour le message de notification Push. mais comment obtenir des données d'ensemble à partir de la méthode onMesssageReceived reçue par RemoteMessage.

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

Alors, dites-moi comment j'analyse remotemessage pour obtenir toute valeur de notification.

Ma paye

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

Dans FCM, vous avez reçu RemoteMessage au lieu de Bundle.

Ci-dessous, la façon dont j'ai utilisé dans mon application où les données sont mon 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();

Vous trouverez ci-dessous les données de notification que je vous envoie depuis le serveur.

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

Donc, vous devez analyser chaque champ selon votre réponse. Comme j'ai débogué le code, vous recevrez une carte dans votre RemoteMessage et convertissez ces champs en types de données appropriés car toutes ces données sont fournies sous forme de chaîne.

27
Drup Desai

Voici l'extrait de code qui est à peu près explicite.

Vous obtenez les données sous la forme de la carte

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

Assurez-vous du serveur que vous envoyez des données au format correct, c'est-à-dire dans la clé "data"

voici le fichier de démonstration Json

{
  "to": "registration_ids",
  "data": {
    "key": "value",
    "key": "value",
    "key": "value",
    "key": "value"
  }
}
42
Pritish Joshi