将注册ID存储在共享首选项GCM上

时间:2012-10-08 09:48:40

标签: android google-cloud-messaging

我正在尝试将GCM集成到我的应用中。我在许多地方读到,在onRegistered()中,我们应该将regId存储在共享首选项中。任何人都可以告诉,为什么需要将ID存储在共享首选项上。我看到GCMRegistrar.java代码,内部正在执行此机制。那么为什么需要手动将ID存储在共享首选项上。

5 个答案:

答案 0 :(得分:8)

您不需要将其保存在sharedPreference中。请使用以下行

final String regId = GCMRegistrar.getRegistrationId(getApplicationContext());
if (regId.equals("")) {
      GCMRegistrar.register(this,SENDER_ID);
 } else {
        //Already registered
 }

如果registartion id为null,您可以进行注册..

答案 1 :(得分:4)

此方法用于不每次注册设备。

  1. 如果您使用gcm-client.jar,则无需担心。这是在这个jar文件中实现的。
  2. 如果您想自己实施,那么您可以

    • 使用SharedPreferences保存registrationId或将其保存在数据库或文件系统等上。
    • 不是每次都保存registrationId和注册设备。但是,这不是一个好的设计选择,因为它需要在应用程序启动时再多一次迭代(从谷歌获取注册ID)。

答案 2 :(得分:3)

简单。不要让它变得复杂。 如果您的设备已在GSM注册,它将不会自动获得通知。 您必须向需要注册ID的第三方服务器注册您的设备。

由于id存储在pref中,因此不会一次又一次地注册设备。

答案 3 :(得分:1)

这是一个设计选择。您可能希望将其存储在SharedPreferences,文件或SQLite数据库中。这实际上取决于应用程序以及您要用它完成的任务。

至于GCMRegistrar.java示例将其存储在SharedPreferences中的原因 - 我认为已经完成,因为在更新应用程序时需要使本地存储的设备ID无效/删除,这是通过删除保存在设备上的原始数据轻松完成。与查询数据库或通过rmfile()删除文件相比,更容易和资源节约(不超过3-4行代码)。

答案 4 :(得分:1)

我认为您必须自己注册才能在将来使用它,例如与指定您的regID的推送服务器通信。