1

我使用 Google Cloud Messaging (GCM) 创建了一个推送通知服务器 (PNS)。使用这种架构,我的服务器必须知道与用户关联的令牌才能向他发送推送通知。

我扩展了InstanceIDListenerService在刷新令牌时正确通知的类(我用 adb 对其进行了测试)。当它的方法onTokenRefresh()被调用时,我会使用新的令牌,到目前为止,一切都很好。

我的问题如下:如果我无法将此新令牌发送到我的服务器怎么办?(网络错误、缺少连接、设备突然关闭或其他原因……)。我是否必须存储服务器不知道我的新令牌的某个地方(首选项?)并在可能的情况下重试?有没有办法让操作系统执行这个操作?

4

2 回答 2

0

您的应用程序(当它运行时)应始终检查令牌是否已发送到服务器。当调用 onTokenRefresh 时,您应该生成一个新令牌并将其发送到服务器。如果将令牌发送到服务器失败,那么下次您的应用运行时它应该重试。

您是正确的,如果您未能将令牌发送到服务器 onTokenRefresh 您的应用将不会收到通知,直到它再次运行并成功将令牌发送到服务器。

另请注意,令牌刷新不应经常发生。仅当应用程序被卸载并重新安装或令牌被认为不再安全时才会发生这种情况。

于 2015-11-07T12:45:41.360 回答
0

您可以使用GCM NetworkManager来排队、安排、检查网络连接等等,它非常可靠和有用,它可以处理您想要的所有任务。

此外,您必须将令牌保存在您设备的某个位置,可能在您的共享首选项中,直到您确保您的服务器接收它为止。请注意,如果您想使用 GCM 的其他功能,例如主题消息传递,您必须保存并使用令牌来注册所有主题。

于 2015-11-07T20:06:42.383 回答