在 Pubnub 上未收到 GCM 通知
Not receiving GCM Notifications on Pubnub
我正在尝试在我的 PubNub 应用程序中获取推送通知w/GCM:
这是我正在做的事情:
- 我注册了常规的 PUbnub 频道并且能够发送接收常规消息。
订阅 PushNotification 频道:
var regId = getDeviceRegistrationId()。 //这是来自GCM注册响应
pubnub!!.addPushNotificationsOnChannels()
.pushType(PNPushType.GCM)
.channels(Arrays.asList( pubnubChannelID+ CHANNEL_TAG_PUSH))
.deviceId(regId)
.async( object : PNCallback<PNPushAddChannelResult>() {
override fun onResponse(result: PNPushAddChannelResult?, status: PNStatus?) {
Timber.d("PNPushAddChannelResult "+!status!!.isError)
}
});
在 Pubnub 控制台中,我输入了有效的 GCM api 密钥
我正在向上面注册的频道发布如下消息:
{
"pn_gcm":{
"data": "A Message"
},
"pn_apns":{
"aps":{
"alert":{
"loc-key" : "MessageAlertKey",
"loc-args" : "none"}
}
}
}
位于 https://support.pubnub.com/support/discussions/topics/14000006344#latest 的文档仅有少量用处。
使用 Pubnub 在 android 设备上接收 GCM 推送通知时我错过了什么?
感谢任何帮助。
谢谢
注意:以下内容可以在 this PubNub Support KB article 中找到,但 Stack Overflow 政策不允许简单回复 link。所以我把内容贴在这里。本人原创,非盗版;)
为什么我的 FCM 推送通知不起作用?
当您在 PubNub 应用程序中配置和实施 FCM 时,您可能看不到正在发送的推送通知。在您执行任何 PubNub mobile push troubleshooting 之前,请确保您正在发送和接收预期的 FCM 类型。
注意:以下内容直接来自 Android FCM docs:
使用 FCM,您可以向客户端发送两种类型的消息:
- 通知消息,有时被认为是“显示消息”。这些由 FCM SDK 自动处理。
- 数据消息,由客户端应用处理。
- 通知消息包含一组预定义的用户可见键,并且可以包含可选的数据负载。
- 相比之下,数据消息仅包含用户定义的自定义键值对。
- 两种消息类型的最大有效负载为 4KB,但从 Firebase 控制台发送消息时除外,它强制执行 1024 个字符的限制。
根据上述情况,可能是您应用中的代码提取了错误的消息类型,或者您发送了错误的消息类型。例如,您可以在 FCM(以前称为 GCM)消息负载中使用一个、另一个或两个消息密钥:data
或 notification
.
{
"pn_gcm" : {
"notification": {
"title":"Portugal vs. Denmark",
"body":"great match!"
},
"data" : {
"body" : "great match!",
"room" : "PortugalVSDenmark"
}
}
}
您只需要 data
或 notification
(可能两者都取决于您的用例),但如果您只发送 data
确实很重要,因为您的代码明确负责显示推送通知,而 notification
将由 Android.
自动显示
我正在尝试在我的 PubNub 应用程序中获取推送通知w/GCM:
这是我正在做的事情:
- 我注册了常规的 PUbnub 频道并且能够发送接收常规消息。
订阅 PushNotification 频道:
var regId = getDeviceRegistrationId()。 //这是来自GCM注册响应
pubnub!!.addPushNotificationsOnChannels() .pushType(PNPushType.GCM) .channels(Arrays.asList( pubnubChannelID+ CHANNEL_TAG_PUSH)) .deviceId(regId) .async( object : PNCallback<PNPushAddChannelResult>() { override fun onResponse(result: PNPushAddChannelResult?, status: PNStatus?) { Timber.d("PNPushAddChannelResult "+!status!!.isError) } });
在 Pubnub 控制台中,我输入了有效的 GCM api 密钥
我正在向上面注册的频道发布如下消息:
{ "pn_gcm":{ "data": "A Message" }, "pn_apns":{ "aps":{ "alert":{ "loc-key" : "MessageAlertKey", "loc-args" : "none"} } } }
位于 https://support.pubnub.com/support/discussions/topics/14000006344#latest 的文档仅有少量用处。
使用 Pubnub 在 android 设备上接收 GCM 推送通知时我错过了什么?
感谢任何帮助。
谢谢
注意:以下内容可以在 this PubNub Support KB article 中找到,但 Stack Overflow 政策不允许简单回复 link。所以我把内容贴在这里。本人原创,非盗版;)
为什么我的 FCM 推送通知不起作用?
当您在 PubNub 应用程序中配置和实施 FCM 时,您可能看不到正在发送的推送通知。在您执行任何 PubNub mobile push troubleshooting 之前,请确保您正在发送和接收预期的 FCM 类型。
注意:以下内容直接来自 Android FCM docs: 使用 FCM,您可以向客户端发送两种类型的消息:
- 通知消息,有时被认为是“显示消息”。这些由 FCM SDK 自动处理。
- 数据消息,由客户端应用处理。
- 通知消息包含一组预定义的用户可见键,并且可以包含可选的数据负载。
- 相比之下,数据消息仅包含用户定义的自定义键值对。
- 两种消息类型的最大有效负载为 4KB,但从 Firebase 控制台发送消息时除外,它强制执行 1024 个字符的限制。
根据上述情况,可能是您应用中的代码提取了错误的消息类型,或者您发送了错误的消息类型。例如,您可以在 FCM(以前称为 GCM)消息负载中使用一个、另一个或两个消息密钥:data
或 notification
.
{
"pn_gcm" : {
"notification": {
"title":"Portugal vs. Denmark",
"body":"great match!"
},
"data" : {
"body" : "great match!",
"room" : "PortugalVSDenmark"
}
}
}
您只需要 data
或 notification
(可能两者都取决于您的用例),但如果您只发送 data
确实很重要,因为您的代码明确负责显示推送通知,而 notification
将由 Android.