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

特定のデバイスでの分析や不正防止などのユースケースでは、組織が所有する一連のアプリ全体で利用状況やアクションを関連付ける必要がある場合があります。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 SDK を追加する

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

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

次のサンプル スニペットは、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();
    }
});

UUID 形式について詳しくは、Universally unique identifier をご覧ください。