【问题标题】:GCM collapse_key not workingGCM 崩溃键不起作用
【发布时间】:2015-08-17 11:43:25
【问题描述】:

我有一个 python/django 应用程序正在向 GCM 发送推送通知,但我无法让 collapse_key 参数工作。它为每条新消息创建一个新通知,而不是折叠它们。 python代码如下所示:

  url = 'https://gcm-http.googleapis.com/gcm/send'                                                                                        
  post_data = {                                                                   
      'to': mytoken,                                                                
      'collapse_key': 'myappname',                                                  
      'data': mydata                                                                
  }                                                                               
  headers = {                                                                     
      'Authorization': 'key={}'.format(GCM_API_KEY),                     
      'Content-Type': 'application/json'                                          
  }                                                                                                                                               
  requests.post(                                                                  
      url,                                                                        
      data=json.dumps(post_data),                                                 
      headers=headers) 

通知没有问题,但它们不会崩溃。我做错了吗?

客户端是使用 phonegap 推送通知插件 (https://github.com/phonegap-build/PushPlugin) 的 phonegap 移动应用程序。该插件正在处理设备上的推送通知,我不确定如何更改它创建和显示它们的方式。

如果其他人遇到同样的问题,看起来方法是在data 中传递notId 参数。具有相同notId 的通知将相互替换。

【问题讨论】:

  • 当您的设备关闭时它们不会崩溃?
  • 您可以在创建通知的位置发布代码 sn-p 吗?供您参考:collapse_key 用于在 GCM 服务器上折叠通知,如果您每次收到通知时都创建一个新通知,那么这与 collapse_key 无关,而是您的错误。并且:如果您的设备在线,则 GCM 无需崩溃,因为可以立即发送通知(如果您触发第二个通知,则第一个通知已经从 GCM-server 中删除,因为第一个通知已经发送到设备)
  • 来自文档here,我认为您应该尝试在headers 中设置collapse_key 参数。
  • 看来我误解了collapse_key的用途,没想到它只是为了离线通知。

标签: android python django google-cloud-messaging


【解决方案1】:

collapse_key 仅在设备离线时有效,例如,如果我的设备处于飞行模式,并且它收到了 5 条具有相同 collapse_key 的消息,则设备只会在飞行模式关闭时收到最后一条。

如果设备持续连接到 GCM,则每条消息都会到达您的设备。

听起来您想在通知上设置tag,这样当有新消息到达时,它将替换现有通知。

【讨论】:

  • 我没有看到 FCM 文档中提到的这种不幸的细微差别。您对此信息有引用吗?
  • 我终于找到了一些官方文档(在一个奇怪的地方)(几乎没有)证实了这一点:firebase.google.com/docs/cloud-messaging/…
猜你喜欢
  • 1970-01-01
  • 2018-04-09
  • 2013-08-13
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 2017-01-30
相关资源
最近更新 更多