相关疑难解决方法(0)

如何解析Android中的Json数据for Firebase Cloud Messaging(FCM)

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)

android json firebase firebase-cloud-messaging

12
推荐指数
2
解决办法
7444
查看次数

在Android中解析动态JSON

我有一个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)

android json

5
推荐指数
1
解决办法
4232
查看次数

FCM 数据消息:需要发送 JSON 数组来代替字符串值

根据 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)

firebase firebase-cloud-messaging

5
推荐指数
1
解决办法
3503
查看次数