我已针对推送通知消息迁移gcm to fcm
。
但是我如何从RemoteMessage获取捆绑数据收到onMesssageReceived方法。
Old GCM give bundle data onMessageReceiced method but in FCM there is RemoteMessage data.
因此,请告诉我如何解析remotemessage以获取所有通知值。
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"
]
}
答案 0 :(得分:41)
这是一段非常自我解释的代码片段。
您可以使用地图
的形式获取数据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());
}
}
确保从服务器发送正确格式的数据,即“数据”键
这是演示Json文件
{
"to": "registration_ids",
"data": {
"key": "value",
"key": "value",
"key": "value",
"key": "value"
}
}
答案 1 :(得分:25)
在FCM中,您收到了RemoteMessage而不是Bundle。
以下是我在我的应用程序中使用的方式,其中数据是我的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();
以下是我从服务器发送的通知数据
{
"registration_ids": "",
"data": {
"questionId": 1,
"userDisplayName": "Test",
"questionTitle": "Test",
"latestComment": "Test"
}
}
因此,您必须根据您的回复解析每个字段。 当我调试代码时,您将在RemoteMessage中接收映射并将这些字段转换为适当的数据类型,因为所有这些数据都以字符串形式出现。
答案 2 :(得分:2)
对于您的数据,如下所示:
"data":{
"message": "Message for new task",
"time": "6/27/2016 5:24:28 PM"
}
您应该使它们通过
Log.d(TAG, "Key Data : " + remoteMessage.getData().get("message").toString());
Log.d(TAG, "Key Data : " + remoteMessage.getData().get("time").toString());
将它们包裹在尝试中以确保
答案 3 :(得分:2)
source $HOME/.zshrc
答案 4 :(得分:1)
乐趣的类型 getData()
是 Map<String, String>
。因此,您可以像我们通常使用 data
获取一样获取 Map<String, String>
对象值。
"data": {
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4"
}
那么你必须在 kotlin 中像这样获取
val data = remoteMessage.data
val key1 = data[key1]
val key2 = data[key2]// you can fetch like this
对于 getNotification()
类型是 Notification
对象
val notification: Notification = remoteMessage.notification
val message = notification.body
val title = notification.title // you can fetch by accessing Notification class member
以下是有关 Notification 对象的详细信息