20

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

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

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

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

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

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

更新 1:

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

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

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

4

2 回答 2

18

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

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

于 2012-12-07T17:14:28.953 回答
7

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

于 2012-12-07T13:30:05.997 回答