首页 > 解决方案 > 未在 Pubnub 上收到 GCM 通知

问题描述

我正在尝试在我的 PubNub 应用程序中获取带有 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”:{“数据”:“消息”},“pn_apns”:{“aps”:{“警报”:{“loc-key”:“MessageAlertKey”,“loc-args”:“无” } } } }

位于:https: //support.pubnub.com/support/discussions/topics/14000006344#latest的文档仅略微有用。

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

感谢任何帮助。

谢谢

标签: push-notificationgoogle-cloud-messagingpubnub

解决方案


注意:以下内容可以在这篇 PubNub 支持知识库文章中找到,但是有一个 Stack Overflow 政策不使用简单的链接回复。所以我在这里粘贴内容。我写了原件,所以它不是在偷;)

为什么我的 FCM 推送通知不起作用?

当您在 PubNub 应用程序中配置和实施 FCM 时,您可能看不到您正在发送的推送通知。在您进行任何PubNub 移动推送故障排除之前,请确保您正在发送和接收预期的 FCM 类型。

注意:以下内容直接来自Android FCM 文档:使用 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因为您的代码明确负责显示推送通知,而notificationAndroid 将自动显示。


推荐阅读