如何在使用GCM时堆叠或分组注册ID?

时间:2013-05-31 04:55:12

标签: android push-notification google-cloud-messaging

我刚刚开始使用Google Cloud Messaging并阅读User Notifications。 根据此链接,将立即通知特定用户拥有的所有设备。

在我的情况下,特定用户由他/她的user_id标识,数据库将如下所示:

  

[user_id] [gcm_registration_id]

根据演示,在应用程序端,此registration_id存储为持久数据。

如果用户卸载应用程序且持久数据消失,会发生什么?

  1. 用户重新安装应用后,是否会为同一设备上的相同应用获得相同的注册ID?

  2. Google会在一段时间后使这些注册ID无效吗?

2 个答案:

答案 0 :(得分:1)

  

我会在同一个app上获得相同的registration_id   设备一旦用户重新安装应用程序?

YES。注册有两种情况。您的应用将注册或Google刷新注册ID。所以在任何一个案件执行之前你都可以使用旧的注册表。

  

谷歌在任何情况下都会使这些registration_ids无效   时间?

YES。 Google会刷新注册ID。 GCM为您提供有关处理更新的注册ID的想法。


处理客户端的更新ID

如果注册成功,GCM服务器会广播com.google.android.c2dm.intent.REGISTRATION意图,为Android应用程序提供注册ID。 Android应用程序应存储此ID以供以后使用(例如,检查onCreate()是否已注册)。 请注意,Google可能会定期刷新注册ID,因此您应该设计Android应用程序,并了解 com.google.android.c2dm.intent.REGISTRATION 意图可能是多次召唤。您的Android应用程序需要能够做出相应的响应。

答案 1 :(得分:1)

实际上你接受的答案并不完全正确。

我测试了在设备上卸载和重新安装应用的情况,在某些情况下,您可以获得不同的注册ID。

有两种情况:

    • 您安装了一个应用程序,注册到GCM并获得注册ID。
    • 您卸载应用
    • 您的服务器会向该注册ID发送一些消息,直到您从GCM收到NotRegistered错误(我相信您只会从发送的第二条消息中收到该错误)。
    • 您重新安装应用
    • 当app注册GCM时,您会收到新注册ID
    • 如果您现在发送带有旧注册ID的邮件,它仍然有效,但您会在响应中获得新的注册ID作为规范注册ID。
    • 您安装了一个应用程序,注册到GCM并获得注册ID。
    • 您卸载应用
    • 在卸载应用程序时,服务器不会向该注册ID发送任何内容。
    • 您重新安装应用
    • 当app注册到GCM
    • 时,您会收到相同的注册ID