Google 云消息传递实例 ID 是永久的还是临时的?
Is Google cloud messaging instanceID permanent or temporarly?
我正在使用 google 云消息传递创建一个 Messenger 应用程序,我只是想使用 instanceID 中的令牌来识别用户,但出于某种未知原因,我从该方法获得的第一个令牌
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
与我使用 "from" 标签从服务器获取的令牌不同。
public void handleIncomingDataMessage(Map<String, Object> jsonObject) {
String from = jsonObject.get("from").toString(); }
我只需要知道这是我的编码问题还是它真的在改变,我不能再依赖令牌了。
(我不懂英文)
再次调用此代码:
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
将生成新的令牌,它将不等于您之前获取到服务器的旧令牌。
实例 ID 确实应该是常量,如下所述:
什么是实例 ID?
不过,有两点需要注意:
- 确保您没有在代码中的某处调用
getID()
方法。它旨在获得一个新的新鲜令牌。
- Google 出于安全原因可以决定强制更新它。你必须处理这种情况:"Your app must implement a listener to respond to token refresh requests from the Instance ID service."
我正在使用 google 云消息传递创建一个 Messenger 应用程序,我只是想使用 instanceID 中的令牌来识别用户,但出于某种未知原因,我从该方法获得的第一个令牌
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
与我使用 "from" 标签从服务器获取的令牌不同。
public void handleIncomingDataMessage(Map<String, Object> jsonObject) {
String from = jsonObject.get("from").toString(); }
我只需要知道这是我的编码问题还是它真的在改变,我不能再依赖令牌了。
(我不懂英文) 再次调用此代码:
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
将生成新的令牌,它将不等于您之前获取到服务器的旧令牌。
实例 ID 确实应该是常量,如下所述: 什么是实例 ID?
不过,有两点需要注意:
- 确保您没有在代码中的某处调用
getID()
方法。它旨在获得一个新的新鲜令牌。 - Google 出于安全原因可以决定强制更新它。你必须处理这种情况:"Your app must implement a listener to respond to token refresh requests from the Instance ID service."