在GCM服务器端获取客户端令牌或强制刷新

时间:2016-05-04 13:40:32

标签: google-cloud-messaging

我正在做一个用于Android的小型cordova APP,它使用GCM插件连接到GCM并接收通知。

我知道GCM的所有工作流程:

  • 服务器APP启动
  • 客户端连接到服务器,获取GCM令牌并发送到服务器
  • 服务器存储客户端令牌
  • 客户端断开连接
  • 服务器可以使用保存的最后一个令牌向客户端发送推送消息
  • 如果客户端重新连接,请检查客户端令牌以在服务器中更新是否

    但我有一个特例:

  • 服务器APP启动

  • 客户端连接到服务器,获取GCM令牌并发送到服务器
  • 客户端断开连接
  • 服务器崩溃,丢失客户端令牌
  • 服务器重启,没有clien令牌
  • 服务器无法向客户端发送推送,因为丢失了客户端令牌,客户端仍在侦听推送,但服务器无法强制更新。

是否存在允许服务器重置客户端令牌或让客户端连接到特定GCM APP ID的方法?因为如果我需要重新安装服务器并且不保存令牌,我不知道客户端是否正在侦听,如果客户端令牌过期,我永远不会知道。

1 个答案:

答案 0 :(得分:1)

为什么不将令牌持久存储到数据库中?如果服务器崩溃,那么你不会松动令牌。

此外,您可以通过在向无效令牌发送消息后检查来自GCM的错误响应来完成刷新无效令牌,如果您获得了例如Unregistered Device,那么您所要做的就是从数据库中删除该令牌。详情请见herehere