我已经组装了一个框架客户端/服务器 GCM 应用程序,该应用程序在我的 Android 手机上接受并显示来自我粗糙且准备好的服务器的消息。我说“骨架”和“粗略准备”是因为我的应用程序的 registration_id 被硬编码到服务器端,作为我在启动示例 Android 应用程序并在 GCM 服务器上注册应用程序/设备组合时在调试器中捕获的值。当我开始思考时,我正要开始为双方提供一个读/写机制来访问服务器上的一个简单数据库来存储 reg_id/device 组合:
我知道这个 reg_id 可以随时过期,因为谷歌说它可以。从文档中可以清楚地看出如何检查 id 是否仍然可以 IF,而且这是一个很大的 IF,我再次启动应用程序。但是,我或任何其他用户为什么要重新启动它?在清单中注册的 GCMIntentService 会根据需要在那里接收消息,并且无需出于任何原因再次运行该应用程序。因此,当 id 过期时,我将停止接收消息 - 服务器可能会从返回代码中知道,但无法通知我的应用程序 - 除非我再次运行应用程序并通过其onCreate()
可能的registerClient()
方法,否则无法恢复。
那么当 id 过期时会发生什么?我看不到 IntentService 中的任何 on.. 方法都会执行。谷歌自己会发送一条正常的消息说它即将过期吗?我是否需要编写一个警报任务来每天运行并检查 id?