2017-05-13 47 views
0

我试图使用Firebase云消息传递向Android设备发送推送通知。将JSON发送到Firebase云消息传递

的JSON消息不工作,我得到一个400响应

{ “到”: “cXE06Grz67M:APA91bHoOc7pUPqKc9SMgCMKwH2s0r2zAyMac-LVjZVJiRLKSHCPVzi1K1tHmwq_Z35u8i32XL-cQKHGSWvzjD6ItvaMZh-LpRLHaz0iPQTMV-yQ6sqEHBjUvYkN3BDM4ftFowUs_L2p”, “数据” : “{\” PushMessage \ “:\” 11 \ “}”}

它是引起的问题在 “数据” 部分。

下 - 没有 “数据” 的一部分 - 作品,我得到一个200响应

“到”: “cXE06Grz67M:APA91bHoOc7pUPqKc9SMgCMKwH2s0r2zAyMac-LVjZVJiRLKSHCPVzi1K1tHmwq_Z35u8i32XL-cQKHGSWvzjD6ItvaMZh-LpRLHaz0iPQTMV-yQ6sqEHBjUvYkN3BDM4ftFowUs_L2p” }

JSON格式有什么问题?我该如何解决它?

具体而言,从产生的“数据”部分(服务器端代码是Java):

HashMap<String, String> dataMessages = new HashMap<>(); 
dataMessages.put("PushMessage", Integer.toString(pushMessage)); 
... 
Type stringStringMap = new TypeToken<Map<String, String>>() { 
}.getType(); 
Gson gson = new Gson(); 
String dataMessageString = gson.toJson(dataMessages, stringStringMap); 
... 
JsonObject jsonObject = new JsonObject(); 
... 
jsonObject.addProperty("data", dataMessageString); 
... 

回答

1

您可能已经认识到,所述消息的一部分data无效JSON。该GSON转换添加额外的报价和回斜线:

"data":"{\"PushMessage\":\"11\"}" 

应该是:

"data": {"PushMessage":"11"} 

我不是很有经验的GSON。下面显示的修改似乎产生了所需的格式。可能有更好的方法。

HashMap<String, String> dataMessages = new HashMap<>(); 
dataMessages.put("PushMessage", Integer.toString(pushMessage)); 
... 
Type stringStringMap = new TypeToken<Map<String, String>>() { 
}.getType(); 
Gson gson = new Gson(); 
//String dataMessageString = gson.toJson(dataMessages, stringStringMap); 

JsonElement dataElement = gson.toJsonTree(dataMessages, stringStringMap); //ADDED 
... 
JsonObject jsonObject = new JsonObject(); 
... 
jsonObject.add("data", dataElement); //CHANGED 

Log.d(TAG, "gsonTest: " + jsonObject.toString()); //DEBUG 
... 
相关问题