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

Not able to read data from GCM Push notification using PubNub

我收到来自 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 class 上的侦听器。但是,如果您看到 Bundle 对象 'data' 没有名为 'message' 的密钥来读取我们传递的密钥。请参阅下面随附的屏幕截图。

我的发布请求有什么问题吗?

3) 我的调试控制台在设备上显示成功消息成功接收到推送通知,这些推送通知已在每个推送服务的目标通道上注册推送消息。 '"Devices found for push notification apns: 0 gcm: 2 mpns: 0"' 如图所附的屏幕截图。

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

我得到了答案。问题出在 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);