【问题标题】:How can I receive multiple notifications by using GCM without replacing the precedent one?如何使用 GCM 接收多个通知而不替换先前的通知?
【发布时间】:2012-11-25 16:13:58
【问题描述】:

我正在处理一个从 GCM 服务器接收通知的项目。

我从 GCM 服务器获得了注册 ID,并将其发送到我的服务器应用程序,该应用程序将其保存在数据库中。

我的设备收到消息,但当我尝试发送另一条消息时,先例被替换。

我知道我们有两种类型的消息:

  • 可折叠的“发送同步”
  • 不可折叠

那么在不更改消息名称的情况下,如何让两条消息在不同时间发送?

更新 1:

当我的设备离线时(例如激活机场模式),我尝试 例如从我的应用程序服务器向 Google 发送 2 条消息 服务器(我读到谷歌存储所有的消息)。但是当我 停用此模式,我只会收到最后发送的消息。

我对不同的消息使用不同的 collapse_key,我收到了所有 其中(当然当设备在线时)。

有人知道我该如何解决这个问题吗?

【问题讨论】:

    标签: c# android web-services push-notification google-cloud-messaging


    【解决方案1】:

    折叠键仅与发送到 GCM 服务器但尚未到达目标设备的消息相关(如果多条此类消息具有相同的折叠键,则只会将其中一条发送到设备当它上线时)。

    在您的问题中,您描述了一种不同的情况 - 设备收到第一条消息,然后设备收到第二条消息并替换原始消息。这与 GCM 无关。它与您的应用程序处理接收到的消息的方式有关。例如,如果您接收消息的应用程序代码显示为通知,则由您决定新消息是覆盖现有通知还是创建新通知。

    【讨论】:

    • 感谢@Eran!是的,我知道我与我无关,因为我收到了这些信息。 @NickT 是对的。我对所有消息都使用了相同的 collapse_key。现在好了。
    • @Eran:如何在客户端处理此问题的代码示例。我在使用电话间隙创建的应用程序上遇到了同样的问题
    【解决方案2】:

    您需要确保每条消息中'collapse_key'字段的值不同

    【讨论】:

    • 感谢@NickT。我读到指定一个不可折叠的消息,我必须省略 collapse_key 参数。因此,GCM 将单独发送每条消息。
    • 我正在为我的服务器应用程序开发 C#。所以我使用了 Systems.Diagnostics。我声明了一个变量(var sec)并使用了 Elapsed 方法(sec.Elapsed)。因此,每条消息都会有不同的collapse_key。非常感谢!!! ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    相关资源
    最近更新 更多