我正在从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;阅读我们通过的。请参阅下面的附件截图。
3)我的调试控制台在成功接收到针对每个推送服务在目标通道上注册推送消息的推送通知的设备上显示成功消息。 &#39;&#34;找到推送通知apns的设备:0 gcm:2 mpns:0&#34;&#39; 如附图所示。
请让我知道我哪里出错了。纠正我。
答案 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);