4

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

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

1-首先调用 GCMRegistrar.unregister 并在 GCMIntentService->onUnregistered 函数中删除账户。这个解决方案的问题是用户必须等待注销完成,也许它没有。我不能让用户在不删除帐户的情况下继续。

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

我认为2号更好,但我不知道它是否是最佳选择。有没有更好的方法来解决它?

4

2 回答 2

2

在 IntentService 中获得令牌后,您可以使用 SharedPreferences 保存它:

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, "");
    }
于 2012-09-25T16:11:26.877 回答
0

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

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

于 2012-09-25T15:48:01.340 回答