我使用Google云消息传递(GCM)创建了推送通知服务器(PNS)。 使用这种架构,我的服务器必须知道与用户关联的令牌,以便向他发送推送通知。
我扩展了在更新令牌时正确通知的类InstanceIDListenerService
(我使用adb测试了它)。当它的方法onTokenRefresh()
被调用时,我接受新的令牌,到目前为止,一切正常。
我的问题如下:如果我无法将此新令牌发送到我的服务器怎么办? (网络错误,缺少连接,设备突然关闭或其他原因......)。 我是否必须存储某个地方(首选项?)服务器不知道我的新令牌并在可能的情况下重试?有没有办法让操作系统执行此操作?
答案 0 :(得分:0)
您的应用(运行时)应始终检查令牌是否已发送到服务器。当调用onTokenRefresh时,您应该生成新令牌并将其发送到服务器。如果将令牌发送到服务器失败,那么下次应用程序运行时,应该再试一次。
您是正确的,如果您未能将令牌发送到服务器onTokenRefresh,您的应用将不会收到通知,直到它再次运行并成功将令牌发送到服务器。
另请注意,令牌刷新不应经常发生。它应该仅在例如卸载并重新安装应用程序或者令牌被认为不再安全时才会发生。
答案 1 :(得分:0)
您可以使用GCM NetworkManager排队,安排,检查网络连接......,它非常可靠和有用,它可以处理您所有想要的任务。
此外,您必须将您的令牌保存在您的设备的某个位置,可能在您的共享首选项上,直到您确保您的服务器重新获得它。请注意,如果您想使用GCM的其他功能,例如topic messaging,则必须为所有主题注册保存和使用令牌。