在json中转换fcm通知响应

时间:2017-02-17 06:23:56

标签: php android json

Bundle
[{
    google.sent_time=1487229288769,
    gcm.notification.created_at=2017-02-16 12:44:52,
    gcm.notification.e=1,
    gcm.notification.Content_available=1,
    gcm.notification.badge=1,
    gcm.notification.title=, from=388143837768,
    google.message_id=0:1487229288775757%19aca14d19aca14d,
    gcm.notification.body=hi, 
    gcm.notification.uid=160,
    collapse_key=com.sid.Smessenger
}]

我从fcm获得上述响应,我想将其转换为json 请检查上面的android代码。

从remoteMessage获得响应。
我没有在getBody()中获取数据 只获得空值。

public void onMessageReceived(RemoteMessage remoteMessage) 
{
    Log.d(TAG, "FROM: " + remoteMessage.getFrom());
    remoteMessage.getFrom();

    if (remoteMessage.getData().size() > 0) 
        {
        Log.d(TAG, "Message data: " + remoteMessage.getData());
        }
    if (remoteMessage.getNotification() != null) 
       {
        Log.d(TAG, "Message body:" +  
        remoteMessage.getNotification().getBody());

        String questionId =  
        remoteMessage.getData().get("gcm.notification.gid");
        String userId = 
        remoteMessage.getData().get("gcm.notification.uid");
        Log.e("Group ID", questionId);
        Log.e("U ID", userId);

        Bundle bundle = new Bundle();
        for (Map.Entry<String, String> entry :
        remoteMessage.getData().entrySet()) {
            bundle.putString(entry.getKey(), entry.getValue());
            Log.e(entry.getKey(), entry.getValue());

            //run it/// and get notification///
        }
        // String created_at = remoteMessage.
        sendNotification(remoteMessage.getNotification().getBody());
        }

    // String value = bundle.getString("request");
 }

1 个答案:

答案 0 :(得分:1)

从您的回复片段中,我相信您的谈论应该如何在Android上进行。

  

它是JSON,但包含在您收到的数据包中   FCM接收函数中的参数尝试从您的包中获取值,如   通常我们在android中做。

     

不要考虑“JSON”,而应该考虑“键/值对”。你的服务器   以键/值对发送数据。您的应用会收到该数据   你得到的意图中的额外内容中的键/值对。你知道你的钥匙   是,所以只需从绑定的额外内容中检索值   那些键(例如,getStringExtra(“message”),getStringExtra(“title”))

希望这能解决你的问题。