有关GCM注销的建议

4
我有一个应用程序,带有登录/注销功能,使用Android的Accounts。我也使用了GCM,在用户登录时注册设备,在用户注销时取消注册设备。但是我遇到了取消注册的问题。
为了从服务器取消注册我的设备,我需要账户令牌。由于我无法将它传递给GCMIntentService中的onUnregistered方法(或者至少我不知道如何),我尝试使用AccountManager获取它,但这时我的账户已经被删除了。我想解决这个问题,脑海中浮现出两个选择:
1- 在GCMIntentService-> onUnregistered函数中首先调用GCMRegistrar.unregister并删除帐户。这种解决方案的问题在于用户必须等待取消注册完成,并且可能无法完成。我不能让用户在不删除帐户的情况下继续使用。
2- 将令牌保存在某个地方(例如应用程序类),以便能够从GCMIntentService-> onUnregistered获取它。
我认为第二种方法更好,但我不知道它是否是最好的选择。是否有更好的办法来解决这个问题?
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, "");
    }

看来我使用第二个是正确的,谢谢你建议我使用SharedPreferences,我会这样做。 - PX Developer

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接