我正在尝试集成GCM
到我的应用程序中。我在很多地方读到onRegistered()
,我们应该存储regId
共享首选项。谁能告诉我,为什么需要将 ID 存储在共享首选项中。我看到了GCMRegistrar.java
代码,在内部它正在执行这种机制。那么为什么需要手动将 ID 存储在共享首选项中。
问问题
3273 次
5 回答
8
您不需要将其保存在 sharedPreference 中。使用以下行
final String regId = GCMRegistrar.getRegistrationId(getApplicationContext());
if (regId.equals("")) {
GCMRegistrar.register(this,SENDER_ID);
} else {
//Already registered
}
如果注册ID为空,您可以去注册..
于 2012-10-15T11:56:55.587 回答
4
此方法用于每次不注册设备。
- 如果您使用 gcm-client.jar,则无需担心。这是在这个 jar 文件中实现的。
如果你想自己实现它,那么你可以
- 使用 SharedPreferences 保存 registrationId 或将其保存在数据库或文件系统等上。
- 不是每次都保存registrationId和注册设备。但是,这不是一个好的设计选择,因为它需要在应用程序启动时再进行一次迭代(从google获取注册id)。
于 2012-10-12T07:43:33.123 回答
3
这很简单。不要让它变得复杂。由于您的设备注册了 GSM,它不会自动收到通知。您必须在需要您的注册 ID 的第三方服务器上注册您的设备。
由于 id 存储在 pref 中,它不会一次又一次地注册设备。
于 2012-10-11T09:22:00.057 回答
1
这是一种设计选择。您可能希望将其存储在SharedPreferences
、文件或 SQLite 数据库中。这实际上取决于应用程序以及您尝试使用它完成的任务。
至于为什么GCMRegistrar.java
示例存储它SharedPreferences
- 我认为它已经完成,因为在更新应用程序时需要使本地存储的设备 ID 无效/删除,这很容易通过删除保存在设备上的原始数据来完成。比查询数据库或通过rmfile()
.
于 2012-10-11T08:20:24.977 回答
1
我认为您必须自己注册它才能在将来使用它,例如与指定您的 regID 的推送服务器通信。
于 2012-10-11T09:26:21.777 回答