Man*_*ngh 2 node.js google-cloud-messaging
我们最近为推送通知应用程序设置了GCM.服务器api在Node.js中,所以我使用节点模块node-gcm将通知推送到gcm服务器.
我们注意到有时数据包没有交付给最终用户.在做了一些搜索后,我调整了一些有助于提高可靠性的设置
我将旧设置更改为以下新设置:
delayWhileIdle标志从true到false,
collapseKey到时间而不是'demo'
timeToLive到7200而不是3
我还读到了关于规范id的内容.谷歌的页面 "规范注册ID被定义为您的应用程序请求的最后一次注册的ID.这是服务器在向设备发送消息时应使用的ID."
我在发送消息时记录了结果.结果中的规范id为0.这是什么意思?结果如下:
{
multicast_id: 9180653668551804000,
success: 1,
failure: 0,
canonical_ids: 0,
results: [ { message_id: '0:1415521804106240%0209acc19067cebd' } ]
}
Run Code Online (Sandbox Code Playgroud)
stackoverflow上的帖子建议用规范id替换注册ID.我不知道何时更换以及何时更换.
在我的服务器数据库中,在安装应用程序时请求reg_id,并将其与用户在数据库中的记录一起存储.另外,结果中的message_id和multicast_id等字段是什么?
Sam*_*mik 11
规范id = 0意味着您的推送服务器使用的注册ID是正常的,不应该被规范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"
}
]
}
Run Code Online (Sandbox Code Playgroud)现在,cannonical_ids = 1,这意味着您的服务器必须替换您在响应中看到的新值的现有注册ID.如果用户重新安装您的客户端应用程序,但是您的推送服务器不知道它并且GCM服务器将通过响应新注册ID,则此情况很容易重现.您可以在我的测试推送服务器上测试这种情况
| 归档时间: |
|
| 查看次数: |
3166 次 |
| 最近记录: |