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

Android GCM在onTokenRefresh()之后重新订阅主题,android,google-cloud-messaging,Android,Google Cloud Messaging,从Google开发者网站上,我发现GCM令牌可能会在一段时间后更改: 实例ID服务定期启动回调(例如, 每6个月),请求您的应用刷新其令牌。可能 在以下情况下也会启动回调: 存在安全问题;例如,SSL或平台问题 设备信息不再有效;例如,备份和恢复 实例ID服务将受到其他影响 我有一个android应用程序使用GCM主题订阅发送推送通知,在这种情况下,当令牌被刷新时,我是否需要再次重新订阅所有主题,或者GCM服务器将自动执行此操作? 提前谢谢。我已经测试过,当令牌刷新时(您收到一个新令牌),您必须

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

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

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

设备信息不再有效;例如,备份和恢复

实例ID服务将受到其他影响

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

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

也结帐

样本测试:

  • 获取令牌(“…B43SCDOEDKU54SIWLL3HBDVSD7E1UDWLAVP4LP”)
  • 注册主题
  • 发送主题通知
  • 工作
  • 重新启动应用程序几次,仍会收到主题通知
  • 强制呼叫
  • instanceID.getToken(defaultSenderId,GoogleCloudMessaging.INSTANCE\u ID\u SCOPE)

  • 令牌已刷新(“…XVT_pZq7fy_vKmskiGpDXMyqdAF6ODl_46JMdi5”)
  • 发送主题的通知。我不明白 更多详情:

    工具#1 用于检查google gcm数据

  • 重新安装应用程序
  • 获取新令牌(“”)
  • 来自工具1的响应

    {
        "applicationVersion": "39",
        "connectDate": "2016-01-12",
        "application": "com.esportlivescore.develop.debug",
        "authorizedEntity": "11443413691531",
        "connectionType": "MOBILE",
        "appSigner": ".................",
        "platform": "ANDROID"
    }
    
    {
        "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的响应

    {
        "applicationVersion": "39",
        "connectDate": "2016-01-12",
        "application": "com.esportlivescore.develop.debug",
        "authorizedEntity": "11443413691531",
        "connectionType": "MOBILE",
        "appSigner": ".................",
        "platform": "ANDROID"
    }
    
    {
        "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"
    }
    
  • 主题的消息正在工作
  • 请求新令牌(刷新)
  • 谷歌重新向我发送旧令牌:)
  • 再次
  • 现在我没有任何订阅:(

  • 我做了一段时间的研究,在GCM主题标签下找不到该文档。我检查了这里的代码:主题。最后,我看到了这个文档:我认为如果你刷新令牌,你应该更新服务器上的新令牌,而不是旧令牌,但在此之前,你必须检查主题,并
    取消订阅主题
    然后把新的放在主题中。