实施C2DM注册的最佳实践

aro*_*ero 8 android web-services android-c2dm

我正在开发一个使用C2DM来接收推送通知的应用程序.我已经实现了整个C2DM电路(客户端和服务器),它工作正常.

目前,我的应用程序有一个按钮来引导C2DM注册,当从Google收到注册ID令牌时,我会在我的应用服务器中调用webservice以将设备与注册ID相关联.

我将在我的应用程序中实现身份验证,并且我有一些与C2DM注册处理相关的问题.

  1. 客户端应用程序(即Android版)将具有登录屏幕作为第一屏幕,因此用户可以输入凭证.一旦凭证得到验证,我就打算调用C2DM注册,以便用户与注册ID令牌相关联.这个可以吗?在以后的应用程序执行中,我可能会存储凭据或某种令牌,因此用户无需再次输入凭据,我是否还应该在应用程序启动时触发C2DM注册?
  2. 我知道Google最终可能会更新注册ID.定期更新注册ID是一种好习惯吗?如果是的话,什么时候应该合适?注册ID令牌是否过期?
  3. 在客户端和服务器之间的注册ID失去同步的罕见情况下会发生什么(例如,新的注册ID到达客户端,在具有旧注册ID的服务器上触发新事件的中间,然后注册ID到达服务器)?谷歌会处理这种情况吗?我的app服务器应该处理这种情况吗?
  4. 当新的注册ID从Google到达时,如果无法访问服务器会发生什么?我应该退避并安排警报再试一次吗?
  5. 你能想到其他任何陷阱吗?

adv*_*tej 6

1)我会尽快解雇C2DM注册.没有什么特别的,但由于请求是异步的,提前启动它将帮助我更快地获得reg ID.但是,每次应用程序启动时都无需触发注册.一次就足够了.

2)每当Google决定更新注册ID时,它会将其发送到设备,您需要执行第一次收到注册时所遵循的相同步骤,即将其传送到服务器.

3&4)您可能想要阅读本文档.它强调的是,您需要确保将注册ID发送到服务器并继续尝试.我在此假设如果刷新了reg ID,并且您的服务器仍然具有旧ID,则它将无法向设备发送消息.它将收到带有错误代码InvalidRegistration的200OK,这意味着(丢失或)错误的注册ID.

5)不能评论太多 - 会说这取决于你的应用程序的设计.但有一点值得注意的是,C2DM仍处于测试阶段,因此预计从长远来看,情况会有所不同.