【问题标题】:Parse received GCM message解析收到的 GCM 消息
【发布时间】:2013-05-20 12:28:02
【问题描述】:

我一直在尝试从收到的 GCM 消息中提取信息。这是从我的服务器发送的消息:

 "Message(data: {profile={"id":"214","name":"Dr Who","phone_number":"214"}})"

以及手机收到的消息:

05-24 21:00:26.083: D/GCMIntentServiceReceived Message:(3929): Received Message: Message(data: {profile={"id":"214","name":"Dr Who","phone_number":"214"}})

这是我用来尝试提取键/值对的代码。

@Override
    protected void onMessage(Context arg0, Intent intent) {

        String message = intent.getStringExtra("message");
        JsonParser parser = new JsonParser();
        JSONFingerprint fingerprintProfile = null;

        Log.d(TAG + "Received Message: ", "Received Message: " + message.toString());

        //System.out.println("PHONE " + intent.getExtras().getString("id")); This returns null


    }

我试图在这个例子中提取“id”字段,但我总是得到 NULL。有人有什么想法吗?谢谢!

【问题讨论】:

    标签: java android json google-cloud-messaging


    【解决方案1】:

    'id' 是封装在 String 消息中的 JSON 的一部分。您应该将字符串消息转换为 JSON 对象,然后检索“id”。

    String[] parts = message.split("=");
    try {
    JSONObject object = new JSONObject(parts[1].substring(0, parts[1].length() - 2));
    String id = object.getString("id");
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    

    请注意,上面的代码非常不通用。您应该尝试从服务器发送一个干净的 json 字符串并跳过字符串切割位。

    【讨论】:

    • 感谢您的回复!似乎问题是由使用 PHP 脚本发送 GCM 消息引起的。切换回纯Java,它工作正常!
    猜你喜欢
    • 2013-07-19
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    相关资源
    最近更新 更多