2012-09-25 43 views
4

我有一个使用Android帐户的登录/注销应用程序。我也使用GCM,所以当用户登录时我注册了设备,如果用户注销,我注销它。我在注销电话时遇到问题。关于GCM取消注册的建议

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

1-先调用GCMRegistrar.unregister并删除GCMIntentService-> onUnregistered函数中的帐户。这个解决方案的问题是用户必须等待取消注册才能完成,也许不会。我不能让用户继续,而不删除该帐户。

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, ""); 
    } 
+0

看来我是对使用2号,谢谢你建议我使用SharedPreferences,我会这样做。 –

0

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

,当用户关闭应用程序的代码会被执行的方法的onDestroy保证。