4

これには簡単な解決策があると思いました。

要件:

  • アプリのインストール/アンインストール セッション全体でデバイスを一意に識別します。

オプション:

  1. 必要に応じて毎回、ある種の Android の device-identifier-API を使用します (毎回 Android の API から読み取ります)。Identifying-app-installationsブログ投稿によると、これは推奨されておらず、信頼できるソリューションではありません。

  2. UUID を 1 回 (最初のアプリの起動時に) 生成し、複数のアプリのインストール/アンインストールにわたって保持されるように、どこかに保持します。この「どこか」の部分が謎です。SD カードやクラウドへの保存などのソリューションはオプションではありません。iOS にはこの種のものに使用できるキーチェーンがありますが、Android に相当するものは見つかりませんでした。

ここでの他のオプションは何ですか? サーバーの実装のため、(2)ルートを優先します(サーバーが存在しない場合、サーバーは初めてUUIDを生成します)。しかし、それがオプションでない場合は、(1) にフォールバックしてサーバーを変更できます。

ありがとう。

4

1 に答える 1

6

アプリケーションのインストール/再インストール間でアプリケーションを一意に識別するには、それを取得しhardware IDて資格情報/キーとして使用する必要があります。

ハードウェア ID を取得するには、次のメソッドを使用できます。

public static String getHardwareId(Context context) {
    return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
}

次の例外を除いて、UUID と部分的に同等です。デバイスで出荷時設定へのリセットが実行されると、値が変更される場合があります。

これを「部分的に同等」と呼ぶ理由は次のとおりです。HardwareID は、ユーザーが最初にデバイスをセットアップしたときにランダムに生成される 64 ビットの数値 (16 進文字列として) であり、ユーザーのデバイスの存続期間中は一定のままである必要があります。 . デバイスで出荷時設定へのリセットが実行されると、値が変更される場合があります。注: デバイスに複数のユーザーがいる場合 (Android 4.2 以降を実行している特定のデバイスで利用可能)、各ユーザーは完全に個別のデバイスとして表示されるため、ANDROID_ID値は各ユーザーに固有です。

しかし、これは 2 番目の問題にぶつかります。それは、どこにどのように保管するかです。アプリがアンインストールされると消去されるため、SharedPreferences に保存しても意味がありません。/data/data/your.package.name/my_stored_keys フォルダーも、アンインストール中に電話から削除されるため、同じです。

アプリをアンインストールしてから再インストールするまで維持したい場合は、サーバー側に保存する必要があります。

于 2015-12-04T12:56:36.460 に答える