デベロッパー所有アプリの特定

特定のデバイスでの分析や不正行為防止などのユースケースでは、組織が所有する一連のアプリ間で使用状況やアクションを関連付けることが必要になる場合があります。Google Play 開発者サービスには、アプリセット ID と呼ばれるプライバシーに配慮したオプションが用意されています。

アプリセット ID のスコープ

アプリセット ID には、次の定義済みのスコープのいずれかを指定できます。特定の ID が関連付けられているスコープを確認するには、getScope() を呼び出します。

Google Play デベロッパー スコープ

Google Play ストアによってインストールされたアプリの場合、アプリセット ID API は、同じ Google Play デベロッパー アカウントで公開されているアプリのセットをスコープとする ID を返します。

たとえば、Google Play デベロッパー アカウントで 2 つのアプリを公開し、両方のアプリが Google Play ストアから同じデバイスにインストールされたとします。これらのアプリは、そのデバイス上で同じアプリセット ID を共有しています。アプリが異なる鍵で署名されていても、ID は同じです。

アプリのスコープ

次のいずれかの条件では、アプリセット ID SDK は特定のデバイス上の呼び出し元アプリに固有の ID を返します。

  • アプリが Google Play ストア以外のインストーラによってインストールされた。
  • Google Play 開発者サービスはアプリの Google Play デベロッパー アカウントを特定できません。
  • アプリは Google Play 開発者サービスなしでデバイスにインストールされています。

キャッシュされたアプリセット ID の値に依存しない

次のいずれかの状況では、デバイス上の Google Play ストアにインストールされている特定のアプリセットのアプリセット ID をリセットできます。

  • 同じ ID 値を共有するアプリのグループが 13 か月以上アプリセット ID API にアクセスしていない。
  • 指定したアプリセットのうち最後のアプリがデバイスからアンインストールされます。
  • ユーザーがデバイスを初期状態にリセットした。

アプリでは、ID 値が必要になるたびに、SDK を使用して ID 値を取得する必要があります。

アプリセット ID SDK をアプリに追加する

次のスニペットは、アプリセット ID ライブラリを使用する build.gradle ファイルの例を示しています。

dependencies {
    implementation 'com.google.android.gms:play-services-appset:16.0.2'
}

次のサンプル スニペットは、Google Play 開発者サービスで Tasks API を使用して、アプリセット ID を非同期で取得する方法を示しています。

Kotlin

val client = AppSet.getClient(applicationContext) as AppSetIdClient
val task: Task<AppSetIdInfo> = client.appSetIdInfo as Task<AppSetIdInfo>

task.addOnSuccessListener({
    // Determine current scope of app set ID.
    val scope: Int = it.scope

    // Read app set ID value, which uses version 4 of the
    // universally unique identifier (UUID) format.
    val id: String = it.id
})

Java

Context context = getApplicationContext();
AppSetIdClient client = AppSet.getClient(context);
Task<AppSetIdInfo> task = client.getAppSetIdInfo();

task.addOnSuccessListener(new OnSuccessListener<AppSetIdInfo>() {
    @Override
    public void onSuccess(AppSetIdInfo info) {
        // Determine current scope of app set ID.
        int scope = info.getScope();

        // Read app set ID value, which uses version 4 of the
        // universally unique identifier (UUID) format.
        String id = info.getId();
    }
});