2

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

在我的例子中,特定用户由他/她的 user_id 标识,数据库如下所示:

[user_id] [gcm_registration_id]

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

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

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

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

4

2 回答 2

1

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

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

有两种情况:

    • 您安装一个应用程序,注册到 GCM 并获得一个注册 ID。
    • 你卸载应用
    • 您的服务器会向该注册 ID 发送一些消息,直到您NotRegistered从 GCM 收到错误(我相信您只会从您发送的第二条消息中收到该错误)。
    • 您重新安装应用程序
    • 当应用注册到 GCM 时,您会收到一个新的注册 ID
    • 如果您现在使用旧注册 ID 发送消息,它仍然可以工作,但您将在响应中获得新注册 ID 作为规范注册 ID。
    • 您安装一个应用程序,注册到 GCM 并获得一个注册 ID。
    • 你卸载应用
    • 卸载应用程序时,服务器不会向该注册 ID 发送任何内容。
    • 您重新安装应用程序
    • 当应用注册到 GCM 时,您会收到相同的注册 ID
于 2013-05-31T14:29:33.437 回答
1

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

是的。在两种情况下注册 id 会发生变化。您的应用会注册,或者 Google 会刷新注册 ID。因此,直到任何一种情况执行您都可以使用旧的 reg id。

一段时间后谷歌有可能使这些registration_ids无效吗?

是的。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 应用程序需要能够做出相应的响应。

于 2013-05-31T05:01:22.230 回答