在for循环中检查Map.Entry中的字符串

时间:2016-12-08 12:17:46

标签: android firebase firebase-cloud-messaging

我正在实施Firebase推送通知。我正在使用remoteMessage.getData()获取推送通知。我在for循环中使用Map.Entry来获取数据。如图所示,我将键和值对作为: key:body,value:{JSON Object}; key:title,value:Placebid。 我想要的是用字符串"标题"获取密钥。并检查它的" Placebid"如果是,则获取密钥" body"的值。它有JSON。如何在for循环中执行此操作?我试过但没有得到JSON的价值。

//onMessageReceived
if(remoteMessage.getData().size() > 0){
            try {
                System.out.println("sammy_getData "+remoteMessage.getData());
                for (Map.Entry<String, String> entry : remoteMessage.getData().entrySet()) {
                    String key = entry.getKey();
                    String value = entry.getValue();
                    Log.d("sammy_ ", "key: " + key + "\n value: " + value);
                    System.out.println("sammy_key: "+key+"\n value: "+value);
                    if(key.contains("title") && value.contains("Placebid")){
                        JSONObject obj = new JSONObject(value);
                        String jobid = obj.getString("job_id");
                        String username = obj.getString("username");
                        String msg = "bided on your job.";
                        String msgbody = username + " " + msg;
                        sendnotificationbid(jobid,msgbody);
                    }

                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
//Push notification format

{
  body={
    "image": "<Image link>",
    "job_id": "1349",
    "id": 121,
    "message": "New Message Received",
    "type": "Placebid",
    "username": "User1234"
  },
  title=Placebid
}   

1 个答案:

答案 0 :(得分:0)

由于您的title=Placebid通知格式位于正文标记之外,因此当您调用remoteMessage.getData()时,它会返回仅在正文<内的数据地图/ strong>标签。 如果你的通知格式改变如下(在标题内移动title = placebid),它将起作用。

//Push notification format
{
  data:{
    "image": "<Image link>",
    "job_id": "1349",
    "id": 121,
    "message": "New Message Received",
    "type": "Placebid",
    "username": "User1234"
    "title":"Placebid"
  }
}

当你知道你要找的钥匙是“标题”时,不需要循环。使用map中的键直接获取值,并检查它是否等于“Placebid”。

修改 通知数据json应该如下面的示例json而且键不是 body ,它是数据

{
"to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
"data" : {
  "image": "<Image link>",
    "job_id": "1349",
    "id": 121,
    "message": "New Message Received",
    "type": "Placebid",
    "username": "User1234"
    "title":"Placebid"
}
}