清除未清除GCM令牌或GCM订阅主题的应用数据

时间:2015-11-16 15:58:26

标签: android google-cloud-messaging token

我订阅了GCM的主题,当我通过Android设置删除所有应用数据时,GCM令牌是相同的,主题上的GCM通知仍然可用,因此我收到了我不想接收的通知

我的问题是:

  • 如何从GCM获取所有订阅主题的列表?
  • 如何在不知道名字的情况下删除所有已订阅的主题?
  • 清除应用数据后是否应更改GCM令牌,或者在这种情况下是否应自动删除所有已订阅的主题?

2 个答案:

答案 0 :(得分:2)

  1. 你不能只使用工具进行调试我建议:) 您必须保存订阅的主题,例如在sharedprefs中。如果您在共享偏好中没有令牌,则应致电instanceId.deleteInstanceID()

  2. 只需致电instanceId.deleteInstanceID()

  3. 令牌很少会改变,但当它改变时,您必须重新订阅所有主题。

  4. 同时结帐this question on SO

    <强> TOOL

    您可以使用this工具进行调试:)

    当我没有订阅任何主题时,我会得到类似的内容:

    {
        "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"
    }
    

    如此宽松的用法。我使用高级REST客户端(plugin for Chrome

    HTTP GET请求

    https://iid.googleapis.com/iid/info/<TOKEN>?details=true
    Content-Type:application/json
    Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
    
    url中的

    TOKEN token obtainet from google

    密钥:可在Google Developer Console / GCM控制台中找到

    enter image description here

答案 1 :(得分:1)

  

如何从gcm获取所有订阅主题的列表?

当前版本的GCM并未提供执行此操作的方法。

  

如何在不知道姓名的情况下删除所有订阅主题?

documentation表示InstanceId.deleteInstanceID()会执行此操作。

  

在清除应用数据或删除所有数据后,是否应更改GCM令牌   在这种情况下自动订阅主题?

虽然documentation表示如果用户清除应用数据,则会删除令牌注册和订阅,但在当前版本的GCM中则不然。在相关question的答案中讨论了这个问题。