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

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