无法使用PubNub从GCM推送通知中读取数据

时间:2017-01-20 07:41:19

标签: android push-notification google-cloud-messaging pubnub gcmlistenerservice

我正在从PubNub获得推送。但是在获得推送通知的同时,它没有任何数据可供阅读。

1)我正在向PubNub发布消息如下:

JSONObject data = new JSONObject();
    JSONObject aps = new JSONObject();
    //Sample data
    try {
        data.put("data", "Android");
        aps.put("aps", "iOS");
    } catch (JSONException e) {
        e.printStackTrace();
    }
    Map<String, Object> payload = new HashMap<>();
    payload.put("pn_apns", aps);
    payload.put("pn_gcm", data);
    payload.put("pn_debug", true);

    pubnub.publish()
            .message(payload)
            .channel("Activity_" + prefs.getActivityDetails().activity_id)
            .async(new PNCallback<PNPublishResult>() {
                @Override
                public void onResponse(PNPublishResult result, PNStatus status) {
                    Log.i("", "");
                }
            });

此请求成功,我收到状态码200

2)我在GcmListenerService类上获得了监听器。但是如果你看到Bundle对象&#39;数据&#39;没有关键的“消息”消息&#39;阅读我们通过的。请参阅下面的附件截图。

我的发布请求有什么问题。 enter image description here

3)我的调试控制台在成功接收到针对每个推送服务在目标通道上注册推送消息的推送通知的设备上显示成功消息。 &#39;&#34;找到推送通知apns的设备:0 gcm:2 mpns:0&#34;&#39; 如附图所示。 enter image description here

请让我知道我哪里出错了。纠正我。

1 个答案:

答案 0 :(得分:1)

我得到了答案。问题出在JSONObject库上。需要使用JsonObject而不是JSONObject。

有效负载的示例代码:

JsonObject payload = new JsonObject(); 
JsonObject androidData = new JsonObject(); 
androidData.addProperty(“Id”, 1); 
androidData.addProperty(“Name”,“Marcelo”); 
JsonObject data = new JsonObject(); 
data.add(“data”, androidData); 
payload.add(“pn_gcm”, data); 
payload.addProperty(“pn_debug”, true); 
System.out.println("before pub: " + payload);