gpt4 book ai didi

java - 将 JSON 发送到 Firebase 云消息传递

转载 作者:行者123 更新时间:2023-12-02 13:11:05 25 4
gpt4 key购买 nike

我正在尝试使用 Firebase 云消息传递向 Android 设备发送推送通知。

JSON 消息不起作用,我收到 400 响应:

{"to":"cXE06Grz67M:APA91bHoOc7pUPqKc9SMgCMKwH2s0r2zAyMac-LVjZVJiRLKSHCPVzi1K1tHmwq_Z35u8i32XL-cQKHGSWvzjD6ItvaMZh-LpRLHaz0iPQTMV-yQ6sqEHBjUvYkN3BDM4ftFowUs_L2p","data":"{\"PushMessage\":\"11\"}"}

是“数据”部分导致了问题。

以下内容 - 没有“数据”部分 - 有效,我收到了 200 响应:

"to":"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);
...

最佳答案

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

关于java - 将 JSON 发送到 Firebase 云消息传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43955639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com