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."