push-notification - 未在 Pubnub 上收到 GCM 通知
问题描述
我正在尝试在我的 PubNub 应用程序中获取带有 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”:{“数据”:“消息”},“pn_apns”:{“aps”:{“警报”:{“loc-key”:“MessageAlertKey”,“loc-args”:“无” } } } }
位于:https: //support.pubnub.com/support/discussions/topics/14000006344#latest的文档仅略微有用。
我在使用 Pubnub 的 android 设备上接收 GCM 推送通知时遗漏了什么?
感谢任何帮助。
谢谢
解决方案
注意:以下内容可以在这篇 PubNub 支持知识库文章中找到,但是有一个 Stack Overflow 政策不使用简单的链接回复。所以我在这里粘贴内容。我写了原件,所以它不是在偷;)
为什么我的 FCM 推送通知不起作用?
当您在 PubNub 应用程序中配置和实施 FCM 时,您可能看不到您正在发送的推送通知。在您进行任何PubNub 移动推送故障排除之前,请确保您正在发送和接收预期的 FCM 类型。
注意:以下内容直接来自Android FCM 文档:使用 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 将自动显示。
推荐阅读
- python - 为什么 python sum() 函数在这种情况下不起作用?
- java - 为什么设计(activity_main.xml)和实际应用看起来不同?
- c# - 使用 C# 中的 Process 方法在打开的记事本中聚焦匹配单词
- javascript - React-将事件传递给内部孩子
- android - 如何通过调用彼此的方法在活动和服务之间进行通信?
- javascript - return 是否隐式添加到回调函数中?
- node.js - Redis 无法连接到 env 端口
- linux - ffmpeg 多个输出仅适用于第一个 rtmp
- apache-flink - 运算符名称 window() 超过 80 个字符
- react-hooks - 将钩子数组反应为要在反应本机日历中使用的特定格式