繁体   English   中英

将JSON发送到Firebase Cloud Messaging

[英]Sending JSON to Firebase Cloud Messaging

我正在尝试使用Firebase Cloud Messaging将推送通知发送到Android设备。

JSON消息不起作用,并且收到400响应

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

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

以下-没有“数据”部分- 起作用,我得到200响应

“至”:“ cXE06Grz67M:APA91bHoOc7pUPqKc9SMgCMKwH2s0r2zAyMac-LVjZVJiRLKSHCPVzi1K1tHmwq_Z35u8i32XL-cQKHGSWvzjD6ItvaMZh-LpRLHZ2YKP-QQYKYKPQH4L

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);
...

您可能已经认识到消息的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
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM