如何在 GCM 中使用折叠键

Posted

技术标签:

【中文标题】如何在 GCM 中使用折叠键【英文标题】:How to use collapse key in GCM 【发布时间】:2013-08-04 11:16:37 【问题描述】:

我正在从 phpandroid 设备发送推送通知。 除了我 不希望 消息崩溃之外,一切正常。 这是我的代码

   $random_collapse = rand(11, 100);
  $fields          = array(
                           'registration_ids'  => $receivers,
                           'data'              => array( "message" => $message ),
                           'collapse_key'      => "$random_collapse", 
                           "time_to_live"      => 25000
                           );

请建议。

编辑

这个我也用过

   $fields          = array(
                           'registration_ids'  => $receivers,
                           'data'              => array( "message" => $message ),
                           );

但还是没有运气

【问题讨论】:

你如何确定它们是否被折叠?您的应用如何处理来自 GCM 的消息?如果您使用相同的NOTIFICATION_ID,设备可能会折叠消息。 【参考方案1】:

您可能在您的 android 设备上使用相同的 notificationId。 它会产生折叠键的效果。

折叠键仅用于从 gcm 到您的设备的延迟和连接问题,当设备再次连接时,gcm 只会发送服务器收到的最后一个折叠键。如果设备已连接,即使它们获得相同的折叠键,您也会收到多次推送(考虑到下一个折叠键是在设备已经收到旧的折叠键时发送的)。

如果您想做类似崩溃的whatsapp,您还必须在您自己的设备上管理它们,以防设备将保持连接到gcm并接收这些消息(正如我所说的gcm不能撤回您已经显示的推送在客户端设备 IE 上相同的折叠键),所以现在您将使用与该通知相同的 notificationId。

底线 - 通知 ID 是您(!)设备的“折叠键”。 您必须保存这对通知才能知道何时删除旧通知以及何时显示新通知。

【讨论】:

【参考方案2】:

This 详尽地使用了可折叠消息。看看吧。

【讨论】:

以上是关于如何在 GCM 中使用折叠键的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse,如何在 XML 文件中激活折叠?

GCM 会在短时间内发送复制主题消息,而 gcm 会延迟发送吗?

如何构建对 GCM 云连接服务器 (XMPP) 的通知密钥请求?

如何使用 GCM 在 Android 中解析或实际获取推送消息

限制 android GCM 中的 collapse_key 计数。第2部分

如何使用 php 在 android studio 中使用 GCM 实现推送通知?