【发布时间】:2012-10-10 17:24:29
【问题描述】:
我已经组装了一个框架客户端/服务器 GCM 应用程序,该应用程序在我的 Android 手机上接受并显示来自我粗糙且现成的服务器的消息。我说“骨架”和“粗略准备”是因为我的应用程序的 registration_id 被硬编码到服务器端,作为我在启动示例 Android 应用程序并在 GCM 服务器上注册应用程序/设备组合时在调试器中捕获的值。我正要着手提供一种读写机制,让双方可以访问服务器上的一个简单数据库来存储 reg_id/device 组合,这时我开始思考:
我知道这个 reg_id 可以随时过期,因为 Google 说它可以。从文档中可以清楚地看到如何检查 id 是否仍然正常 IF,而且这是一个很大的 IF,我再次启动应用程序。但是,我或任何其他用户为什么要重新启动它?在清单中注册的 GCMIntentService 会根据需要在那里接收消息,并且无需出于任何原因再次运行该应用程序。因此,当 id 过期时,我将停止接收消息 - 服务器可能会从返回代码中知道,但无法通知我的应用程序 - 除非我再次运行应用程序并通过它的 onCreate() 并推测,否则无法恢复registerClient() 方法。
那么当 id 过期时会发生什么?我看不到 IntentService 中的任何 on.. 方法都会执行。谷歌自己会发送一条正常的消息说它即将过期吗?是不是需要写一个报警任务每天运行并查看id?
【问题讨论】:
-
@Arpit Garg:它没有回答我的问题。我知道如何检查,但我为什么要检查?我不会打开电子邮件应用程序来检查消息或它是否具有过期的“id”,它只是坐在那里并告诉我何时到达。 GCM 的行为方式应该相同。
标签: android google-cloud-messaging