GCM在onTokenRefresh()之后重新订阅主题

时间:2015-12-13 17:25:49

标签: android google-cloud-messaging

在Google Developer网站上,我发现GCM令牌可能会在一段时间后更改:

  

Instance ID服务定期启动回调(例如,   每6个月),请求您的应用刷新其令牌。有可能   在以下情况下也会启动回调:

     

存在安全问题;例如,SSL或平台问题。

     

设备信息不再有效;例如,备份和还原。

     

实例ID服务会受到影响。

我有一个使用GCM主题订阅的Android应用程序发送推送通知,在这种情况下,当令牌被刷新时,我是否需要再次重新订阅所有主题或GCM服务器会自动执行此操作? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

我已经测试过,当令牌刷新时(您收到一个新令牌),您必须再次注册所有主题。

同时结帐this SO

样品测试:

  1. 获取令牌(“... b43sCSdoEDkU54SIWll3hbDVsd7E1UdwlAvp4LP”)
  2. 注册主题。
  3. 发送主题通知
  4. 作品!
  5. 重启几次应用,仍然会收到主题通知
  6. 强制召唤
  7. instanceID.getToken(defaultSenderId, GoogleCloudMessaging.INSTANCE_ID_SCOPE);

    1. 令牌刷新(“...... XVT_pZq7fy_vKmskiGpDXMyqdAF6ODl_46JMdi5”)
    2. 发送主题通知。我不明白!
    3. 更多详情:

      工具#1 使用this检查google gcm数据

      1. 重新安装应用
      2. 获取新令牌(“”)
      3. 来自工具#1

        的回复
        {
            "applicationVersion": "39",
            "connectDate": "2016-01-12",
            "application": "com.esportlivescore.develop.debug",
            "authorizedEntity": "11443413691531",
            "connectionType": "MOBILE",
            "appSigner": ".................",
            "platform": "ANDROID"
        }
        
        1. 订阅主题
        2. 来自工具#1

          的回复
          {
              "applicationVersion": "39",
              "connectDate": "2016-01-12",
              "application": "com.esportlivescore.develop.debug",
              "authorizedEntity": "11443413691531",
              "rel": {
                  "topics": {
                      "match-28388-start": {
                          "addDate": "2016-01-13"
                      }
                  }
              },
              "connectionType": "MOBILE",
              "appSigner": ".................",
              "platform": "ANDROID"
          }
          
          1. 主题消息正在运行
          2. 申请新令牌(刷新)
          3. Google重新发送旧令牌:)
          4. 同样...
          5. 现在我没有任何订阅:(