【发布时间】:2023-03-19 17:10:01
【问题描述】:
我使用 Google Cloud Messaging (GCM) 创建了推送通知服务器 (PNS)。 使用这种架构,我的服务器必须知道与用户关联的令牌才能向他发送推送通知。
我扩展了InstanceIDListenerService 类,当令牌被刷新时它会被正确通知(我用 adb 对其进行了测试)。当它的方法 onTokenRefresh() 被调用时,我会使用新的令牌,到目前为止,一切都很好。
我的问题如下:如果我无法将此新令牌发送到我的服务器怎么办? (网络错误、缺少连接、设备突然关闭或其他原因……)。 我是否必须存储服务器不知道我的新令牌的某个地方(首选项?)并在可能的情况下重试?有没有办法让操作系统执行这个操作?
【问题讨论】:
-
“我是否必须在某个服务器不知道我的新令牌的地方存储(首选项?)并在可能的情况下重试?” gcmquickstart sample app 就是这样做的,所以你可以看看他们的实现。
-
好吧,这个想法还不错。但是有一个问题:当我被通知必须刷新令牌时,我的应用程序可能无法运行,那么如果我没有机会将令牌发送到我的服务器,我将失去所有(最终)通知在 onTokenRefresh 调用和我的应用程序的下一次启动之间。 (也许我过度放大了问题)
标签: android google-cloud-messaging token instanceid