在 Pubnub 上未收到 GCM 通知

Not receiving GCM Notifications on Pubnub

我正在尝试在我的 PubNub 应用程序中获取推送通知w/GCM:

这是我正在做的事情:

  1. 我注册了常规的 PUbnub 频道并且能够发送接收常规消息。
  2. 订阅 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)  
        }
    });
    
  3. 在 Pubnub 控制台中,我输入了有效的 GCM api 密钥

  4. 我正在向上面注册的频道发布如下消息:

    { "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)消息负载中使用一个、另一个或两个消息密钥:datanotification.

{
    "pn_gcm" : {
        "notification": {
            "title":"Portugal vs. Denmark",
            "body":"great match!"
        },
        "data" : {
            "body" : "great match!",
            "room" : "PortugalVSDenmark"
        }
    }
}

您只需要 datanotification(可能两者都取决于您的用例),但如果您只发送 data 确实很重要,因为您的代码明确负责显示推送通知,而 notification 将由 Android.

自动显示