我使用https://developers.google.com的指南在我的项目中实施了 GCM 。
我采取的步骤是:
对于接收设备令牌:
->
GCMRegistrationIntentService
扩展的类,IntentService
它从我的 mainActivity 开始。-> 在这项服务中,我使用过:
InstanceID instanceID = InstanceID.getInstance(getApplicationContext()); token = instanceID.getToken(AppConstants.SENDER_ID, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
我已成功收到令牌。
LocalBroadcastListener 在我的主要活动中获取在步骤 1 中生成的令牌并将其存储在共享首选项中(也将其发送到我的消息服务器)。
在旧令牌过期的情况下
GCMTokenRefreshListenerService
扩展以获取令牌的类。InstanceIDListenerService
-> 在这我打了一个
GCMRegistrationIntentService
电话onTokenRefresh()
现在我的问题是:
- 在哪种情况下调用 GCMTokenRefreshListenerService?
- 什么是实例 ID?instanceID 的生命周期是什么?
我使用以下命令从终端运行服务:
./adb shell am startservice -a com.google.android.gms.iid.InstanceID --es "CMD" "RST" -n package.name/service.name.
每次都给了我新的令牌。如何将这个新生成的令牌保存在我的共享首选项中?
当我从该服务收到新令牌时,我没有收到通知,因为我的令牌已更改。我必须打开我的应用程序才能更新令牌。如何更新此令牌?
- 每次打开我的应用程序以获取令牌时,我是否必须调用 GCM?