【问题标题】:Not receiving GCM Notifications on Pubnub未在 Pubnub 上收到 GCM 通知
【发布时间】:2018-08-28 08:10:17
【问题描述】:

我正在尝试在我的 PubNub 应用中获得带有 GCM 的推送通知:

这是我正在做的事情:

  1. 我注册了常规的 PUbnub 频道,并且能够发送接收常规消息。
  2. 订阅推送通知频道:

    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”:{ “数据”:“一条消息” }, “pn_apns”:{ “aps”:{ “警报” : { "loc-key" : "MessageAlertKey", “本地参数”:“无”} } } }

https://support.pubnub.com/support/discussions/topics/14000006344#latest 上的文档仅用处不大。

我在使用 Pubnub 的 android 设备上接收 GCM 推送通知时遗漏了什么?

感谢任何帮助。

谢谢

【问题讨论】:

  • 您在 Android 应用程序中用于接收推送通知的代码是什么?我的猜测是您希望 notifications 默认显示,或者您使用错误的 Android API 来接收或获取推送消息。请查看知识库文章:support.pubnub.com/support/solutions/articles/…
  • 只是好奇我提供的文章是否有帮助。让我知道我还能做些什么来提供帮助。干杯!
  • 我确定我的链接是否提供了任何帮助,所以我只是发布了一个可能的答案,以防它对您和其他人有所帮助。

标签: push-notification google-cloud-messaging pubnub


【解决方案1】:

注意:以下内容可以在this PubNub Support KB article 中找到,但有一个 Stack Overflow 政策不使用简单的链接回复。所以我在这里粘贴内容。我写的是原版,所以不是盗版;)

为什么我的 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 自动显示。

【讨论】:

    猜你喜欢
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多