我正在尝试将GCM
集成到我的应用中。我在许多地方读到,在onRegistered()
中,我们应该将regId
存储在共享首选项中。任何人都可以告诉,为什么需要将ID存储在共享首选项上。我看到GCMRegistrar.java
代码,内部正在执行此机制。那么为什么需要手动将ID存储在共享首选项上。
答案 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)
此方法用于不每次注册设备。
如果您想自己实施,那么您可以
答案 2 :(得分:3)
简单。不要让它变得复杂。 如果您的设备已在GSM注册,它将不会自动获得通知。 您必须向需要注册ID的第三方服务器注册您的设备。
由于id存储在pref中,因此不会一次又一次地注册设备。
答案 3 :(得分:1)
这是一个设计选择。您可能希望将其存储在SharedPreferences
,文件或SQLite数据库中。这实际上取决于应用程序以及您要用它完成的任务。
至于GCMRegistrar.java
示例将其存储在SharedPreferences
中的原因 - 我认为已经完成,因为在更新应用程序时需要使本地存储的设备ID无效/删除,这是通过删除保存在设备上的原始数据轻松完成。与查询数据库或通过rmfile()
删除文件相比,更容易和资源节约(不超过3-4行代码)。
答案 4 :(得分:1)
我认为您必须自己注册才能在将来使用它,例如与指定您的regID的推送服务器通信。