4

Androidのアカウントを使用するログイン/ログアウトを備えたアプリケーションがあります。私もGCMを使用しているので、ユーザーがログインするとデバイスを登録し、ユーザーがログアウトすると登録を解除します。登録解除の呼び出しで問題に直面しています。

デバイスをサーバーから登録解除するには、アカウントのトークンが必要です。GCMIntentService から onUnregistered メソッドに渡すことができないので (または少なくとも方法がわからない)、AccountManager を使用して取得しようとしましたが、その時点でアカウントは既に削除されています。私はそれを解決したいのですが、2 つの選択肢が思い浮かびました。

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 に答える