Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 关于取消注册GCM的建议_Android_Google Cloud Messaging - Fatal编程技术网

Android 关于取消注册GCM的建议

Android 关于取消注册GCM的建议,android,google-cloud-messaging,Android,Google Cloud Messaging,我有一个使用android帐户的登录/注销应用程序。我也在使用GCM,所以当用户登录时,我会注册设备,如果用户注销,我会注销设备。我面临注销电话的问题 要从服务器注销我的设备,我需要帐户的令牌。由于我无法从gcminentservice将其传递给onUnregistered方法(或者至少我不知道如何传递),我尝试使用AccountManager获取它,但此时我的帐户已被删除。我想解决这个问题,我想到了两个选择: 1-在gcminentservice->onUnregistered函数中调用第一个

我有一个使用android帐户的登录/注销应用程序。我也在使用GCM,所以当用户登录时,我会注册设备,如果用户注销,我会注销设备。我面临注销电话的问题

要从服务器注销我的设备,我需要帐户的令牌。由于我无法从gcminentservice将其传递给onUnregistered方法(或者至少我不知道如何传递),我尝试使用AccountManager获取它,但此时我的帐户已被删除。我想解决这个问题,我想到了两个选择:

1-在gcminentservice->onUnregistered函数中调用第一个gcmregistar.unregister并删除该帐户。这个解决方案的问题是,用户必须等待注销完成,但可能没有。我不能让用户不删除帐户就继续

2-将令牌保存在某个地方(可能是应用程序类),以便能够从gcminentservice->onUnregistered获取它


我认为2号更好,但我不知道这是否是最好的选择。有没有更好的方法解决这个问题?

您可能应该在主要活动中使用onDestroy。这样,当用户关闭应用程序时,您肯定会调用此方法。我不知道您是如何从服务器上删除设备的(带有url?)


onDestroy方法保证在用户关闭应用程序时执行您的代码。

一旦您在IntentService中获得令牌,您可以使用SharedReferences保存它:

public void savePrefrences(String key, String value)
    {
        SharedPreferences prefs = SynergyApplication._context.getSharedPreferences(SynergyApplication._context.getApplicationContext().getPackageName(), 0);
        prefs.edit().putString(key, value).commit();
    }
然后从应用程序中的任何地方阅读:

public String getPrefrences(String key)
    {
        SharedPreferences prefs = SynergyApplication._context.getSharedPreferences(SynergyApplication._context.getApplicationContext().getPackageName(), 0);
        return prefs.getString(key, "");
    }

看来我使用数字2是对的,谢谢你建议我使用SharedReferences,我会这样做。