2012-09-25 3 views
4

Android 계정을 사용하는 로그인/로그 아웃 응용 프로그램이 있습니다. GCM도 사용 중이므로 사용자가 로그인하면 기기를 등록하고 사용자가 로그 아웃하면 등록을 취소합니다. 등록 취소 전화에 문제가 있습니다.GCM 등록 취소에 대한 조언

내 장치를 내 서버에서 등록 해제하려면 계정의 토큰이 필요합니다. GCMIntentService에서 onUnregistered 메소드로 전달할 수 없으므로 (또는 적어도 어떻게 알지는 못합니다.) AccountManager를 사용하여 가져 오려고했지만 그 시점에서 계정이 이미 삭제되었습니다. 문제를 해결하고 싶습니다. 두 가지 옵션이 있습니다 :

1- GCMCntentService-> onUnregistered 함수에서 먼저 GCMRegistrar.unregister를 호출하고 계정을 삭제하십시오. 이 솔루션의 문제점은 사용자가 등록을 마칠 때까지 기다려야한다는 것입니다. 사용자가 계정을 삭제하지 않고 계속 진행할 수 없습니다.

2 GCMIntentService-> onUnregistered에서 가져올 수 있도록 토큰을 어딘가에 저장하십시오 (응용 프로그램 클래스 일 수 있음).

숫자 2가 더 좋다고 생각하지만, 이것이 최선의 선택인지는 잘 모릅니다. 그것을 해결할 더 좋은 방법이 있습니까?

답변

2

당신이 된 SharedPreferences로 저장할 수 있습니다

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 메서드는 사용자가 앱을 닫을 때 코드가 실행되도록 보장합니다.

public void savePrefrences(String key, String value) 
    { 
     SharedPreferences prefs = SynergyApplication._context.getSharedPreferences(SynergyApplication._context.getApplicationContext().getPackageName(), 0); 
     prefs.edit().putString(key, value).commit(); 
    } 

을 그리고 사방 앱에서에서 읽어 : 당신이 IntentService에서 토큰을 일단