我FCM用于推送消息和处理onMessageReceived中的所有传入推送通知.现在的问题是解析嵌入在这个函数中的嵌入式jsonremoteMessage.getData()
我有以下块作为设备中的推送通知.数据有效载荷的内容可以在这里变化,这是经销商以后可以productInfo
{
"to": "/topics/DATA",
"priority": "high",
"data": {
"type": 6,
"dealerInfo": {
"dealerId": "358",
"operationCode": 2
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我如何解析它
if(remoteMessage.getData()!=null){
JSONObject object = null;
try {
object = new JSONObject(remoteMessage.getData());
} catch (JSONException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我获取带有黑色斜杠的数据作为remoteMessage.getData()返回,Map<String,String>所以可能我的嵌套块正在转换为字符串,但不确定.
{
"wasTapped": false,
"dealerInfo": "{\"dealerId\":\"358\",\"operationCode\":2}",
"type": "6"
}
Run Code Online (Sandbox Code Playgroud)
如果我写,object = new JSONObject(remoteMessage.getData().toString());那么它会因以下通知而失败
{
"to": "regid",
"priority": "high",
"notification" : {
"body": "Message Body",
"title" : "Call Status",
"click_action":"FCM_PLUGIN_ACTIVITY"
}, …Run Code Online (Sandbox Code Playgroud) 我有一个json对象是这样的:
{
Yg7R_: {
fld_invoice: "Yg7R_"
fld_order_id: "5"
fld_orders: {
4: {
fld_oiid: "4"
fld_date: "2014-03-27 00:00:00"
fld_name: "20140327_H5epz2y4OB_IMG_20140326_020341.jpg"
fld_loc: "../orders/oid_5/"
}
}
}
LldP_: {
fld_invoice: "LldP_"
fld_order_id: "7"
fld_orders: {
6: {
fld_oiid: "6"
fld_date: "2014-03-27 00:00:00"
fld_name: "20140327_SovH7Xf3n2_IMG_20140326_020418.jpg"
fld_loc: "../orders/oids_7/"
}
}
}
NYEO: {
fld_invoice: "NYEO"
fld_order_id: "24"
fld_orders: {
27: {
fld_oiid: "27"
fld_date: "2014-03-27 00:00:00"
fld_name: "20140327_duLLsssVWA_IMG_20140326_020341.jpg"
fld_loc: "orders/oid_24/"
}
28: {
fld_oiid: "28"
fld_date: "2014-03-27 00:00:00"
fld_name: "20140327_F8ayA4vWrP_IMG_20140326_020405.jpg"
fld_loc: "orders/oid_24/"
}
29: { …Run Code Online (Sandbox Code Playgroud) 根据 firebac 文档,我们可以按以下格式发送 FCM 数据消息:
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMEFQ3P1...",
"data":{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我需要将数据作为 JSON 数组发送,如下所示:
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoIZvvDMExUdFQ3P1...",
"data":{
"geofence":[{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
},
{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
}]
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试在请求正文中发送 JSON 数组以发送消息,则会出现以下错误:
无法向 Firebase 发送消息:
{ "error":
{ "code": 400,
"message": "Invalid value at 'message.data[0].value' (Map), Cannot have repeated items ('geofence') within a …Run Code Online (Sandbox Code Playgroud)