关于 GCM 中的规范 ID(谷歌云消息传递)
Posted
技术标签:
【中文标题】关于 GCM 中的规范 ID(谷歌云消息传递)【英文标题】:regarding canonical id's in GCM (google cloud messaging) 【发布时间】:2014-11-09 09:34:59 【问题描述】:我们最近为推送通知应用程序设置了 GCM。服务器 api 在 Node.js 中,所以我使用节点模块 node-gcm 将通知推送到 gcm 服务器。
我们注意到有时数据包没有传递给最终用户。在做了一些搜索之后,我调整了一些设置,这对提高可靠性有很大帮助
我将旧设置更改为以下新设置:
delayWhileIdle 标志从真到假,
collapseKey 到一天中的时间而不是“演示”
timeToLive 到 7200 而不是 3
我还阅读了有关规范 ID 的信息。 The google's page "规范注册 ID 定义为您的应用程序请求的最后一次注册的 ID。这是服务器在向设备发送消息时应使用的 ID。"
我在发送消息时记录了结果。结果中的规范 id 为 0。这是什么意思?结果如下:
multicast_id: 9180653668551804000,
success: 1,
failure: 0,
canonical_ids: 0,
results: [ message_id: '0:1415521804106240%0209acc19067cebd' ]
The post here on *** 建议将注册 id 替换为规范 id。我不清楚何时更换,何时不更换。
在安装应用程序并将用户记录存储在数据库中时,会在我的服务器的数据库中请求 reg_id。结果中的message_id和multicast_id这些字段又是什么?
【问题讨论】:
【参考方案1】:canonical id = 0表示你的推送服务器使用的注册id是可以的,不应该被canonical id代替,即通常GCM服务器会响应canonical_id = 0。如果由于某些原因您的服务器发送非实际注册 ID 的推送 GCM 服务器的响应将是:
GCM HTTP 状态:200 GCM 响应正文:
"multicast_id": 7036866281258904189,
"success": 1,
"failure": 0,
"canonical_ids": 1,
"results": [
"registration_id": "APA91bH88lV-u5XNdJoF5p0W2d0F_z_7AM6_cjx1e62s83bvDZYcdU_lkmRaFdnkZ5PPUBdYssfpB2QygMW5V0kTqVpV4atCyKpnBEkVnd_YTY0qr4V9oHSyYpv_HIDGNzpfHyGfXz5fWCKnlnACHr37y1zT91JcrHyUMR6DB15WzwjAE1QtloI",
"message_id": "0:1415529915241995%64ac3713f9fd7ecd"
]
现在,cannonical_ids = 1 这意味着您的服务器必须将现有的注册 ID 替换为您在响应中看到的新值。如果用户重新安装您的客户端应用程序,这种情况很容易重现,但您的推送服务器不知道它,GCM 服务器将在响应中传递新的注册 ID。你可以在我的test push server上测试这种情况
-
@mandeep_m91 关于 message_id 和 multicast_id 我只是建议你阅读documentation。在实践中,我还没有使用过这个字段
【讨论】:
以上是关于关于 GCM 中的规范 ID(谷歌云消息传递)的主要内容,如果未能解决你的问题,请参考以下文章