解析从 android onMessageReceived 上的 fcm 响应获得的 json

Posted

技术标签:

【中文标题】解析从 android onMessageReceived 上的 fcm 响应获得的 json【英文标题】:parsing json gotten from fcm response on android onMessageReceived 【发布时间】:2020-03-20 12:16:31 【问题描述】:

我正在从服务器推送 Firebase 云消息通知,并以 json 的形式收到此响应。我对如何解析 json 有点困惑。 收到的响应是

data="title":"New Confirmation","message":"NGN 450 has been added to your wallet!"

我想访问标题和消息。

【问题讨论】:

【参考方案1】:

试试,

 public void onMessageReceived(RemoteMessage remoteMessage) 
 remoteMessage.getData().get("title")
....

【讨论】:

它不起作用...这是 json 格式正在获取 data="title":"value","message":"value"。我认为“=”符号不合适 然后尝试先像这样将其转换为 JSONObject,JSONObject(remoteMessage.getData())【参考方案2】:

你可以这样做

    val data = message?.data ?: HashMap()
    if(data.containsKey("title"))
        Log.v("onMessageReceived", "" + data.get("title").toString())
    

   if(data.containsKey("message"))
        Log.v("onMessageReceived", "" + data.get("message").toString())
    

【讨论】:

【参考方案3】:

您在onMessageReceived 收到通知响应,并且您说您的通知响应以 JSON 格式发送,然后试试这个。

 public void onMessageReceived(RemoteMessage remoteMessage) 

      //Map<String, String> data = remoteMessage.getData();
      //String title = data.get("title");
      //String message = data.get("message");


     JSONObject  jsonRootObject = new JSONObject(remoteMessage.getData());
     String title = jsonObject.optString("title").toString();
     String message = jsonObject.optString("message").toString();
     // then pass your title and message to notification

【讨论】:

这对我不起作用...这是 json 格式 data="title":"value","message":"value"..我不清楚json响应上的“=”符号 我已经更新了答案,你可以试试这个,因为你提到你的通知响应是 JSON。

以上是关于解析从 android onMessageReceived 上的 fcm 响应获得的 json的主要内容,如果未能解决你的问题,请参考以下文章

从0到1实现一个Android路由——URL解析器

Android从xml加载到View对象过程解析

Android View体系从源码解析View的layout和draw流程

Android View体系从源码解析View的measure流程

如何从android中的url解析xml?

修复错误:无法从“”解析模块“./index.android”