特定のデバイスでの分析や不正防止などのユースケースでは、組織が所有する複数のアプリ間で利用状況やアクションを関連付ける必要がある場合があります。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 ファイルの例を示しています。
次のサンプル スニペットは、Google Play 開発者サービスの Tasks API を使用してアプリセット ID を非同期で取得する方法を示しています。
Kotlin
valclient=AppSet.getClient(applicationContext)asAppSetIdClientvaltask:Task<AppSetIdInfo>=client.appSetIdInfoasTask<AppSetIdInfo>task.addOnSuccessListener({// Determine current scope of app set ID.valscope:Int=it.scope// Read app set ID value, which uses version 4 of the// universally unique identifier (UUID) format.valid:String=it.id})
Java
Contextcontext=getApplicationContext();AppSetIdClientclient=AppSet.getClient(context);Task<AppSetIdInfo>task=client.getAppSetIdInfo();task.addOnSuccessListener(newOnSuccessListener<AppSetIdInfo>(){@OverridepublicvoidonSuccess(AppSetIdInfoinfo){// Determine current scope of app set ID.intscope=info.getScope();// Read app set ID value, which uses version 4 of the// universally unique identifier (UUID) format.Stringid=info.getId();}});
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-09-05 UTC。"],[],[],null,["For use cases such as analytics or fraud prevention on a given device, you may\nneed to correlate usage or actions across a set of apps owned by your\norganization. [Google Play services](https://developers.google.com/android)\noffers a privacy-friendly option called [*app set ID*](https://developers.google.com/android/reference/com/google/android/gms/appset/AppSetIdInfo).\n\nApp set ID scope\n\nThe app set ID can have one of the following defined scopes. To determine which\nscope a particular ID is associated with, call\n[`getScope()`](https://developers.google.com/android/reference/com/google/android/gms/appset/AppSetIdInfo#getScope()).\n| **Caution:** When Google Play services updates from a version that only supports app scope to a version that supports developer scope, the app set ID's value is reset automatically, without any developer action. See [other reasons developers\n| shouldn't rely on a cached value of the app set ID](#dont-rely-on-cached-value).\n\nGoogle Play developer scope **Note:** The app set SDK attempts to return app set IDs that have the developer scope without any additional developer action, unless the app satisfies the conditions for app scope, described below.\n\nFor apps that are installed by the Google Play store, the app set ID API returns\nan ID scoped to the set of apps published under the same Google Play developer\naccount.\n\nFor example, suppose you publish two apps under your Google Play developer\naccount and both apps are installed on the same device through the Google Play\nstore. The apps share the same app set ID on that device. The ID is the same\neven if the apps are signed by different keys.\n\nApp scope\n\nUnder any of the following conditions, the app set ID SDK returns an ID unique\nto the calling app itself on a given device:\n\n- The app is installed by an installer other than the Google Play store.\n- Google Play services is unable to determine an app's Google Play developer account.\n- The app is installed on a device without Google Play services.\n\nDon't rely on a cached value of app set ID\n\nUnder any of the following conditions, the app set ID for a given set of Google\nPlay store-installed apps on a device can be reset:\n\n- The app set ID API hasn't been accessed by the groups of apps that share the same ID value for over 13 months.\n- The last app from a given set of apps is uninstalled from the device.\n- The user performs a factory reset of the device.\n\nYour app should use the SDK to retrieve the ID value every time it's needed.\n\nAdd the app set ID SDK to your app\n\nThe following snippet shows an example `build.gradle` file that uses the app set\nID library: \n\n dependencies {\n implementation 'com.google.android.gms:play-services-appset:16.1.0'\n }\n\nThe following sample snippet demonstrates how you can retrieve the app set ID\nasynchronously using the [Tasks\nAPI](https://developers.google.com/android/guides/tasks) in Google Play\nservices: \n\nKotlin \n\n```kotlin\nval client = AppSet.getClient(applicationContext) as AppSetIdClient\nval task: Task\u003cAppSetIdInfo\u003e = client.appSetIdInfo as Task\u003cAppSetIdInfo\u003e\n\ntask.addOnSuccessListener({\n // Determine current scope of app set ID.\n val scope: Int = it.scope\n\n // Read app set ID value, which uses version 4 of the\n // https://en.wikipedia.org/wiki/Universally_unique_identifier.\n val id: String = it.id\n})\n```\n\nJava \n\n```java\nContext context = getApplicationContext();\nAppSetIdClient client = AppSet.getClient(context);\nTask\u003cAppSetIdInfo\u003e task = client.getAppSetIdInfo();\n\ntask.addOnSuccessListener(new OnSuccessListener\u003cAppSetIdInfo\u003e() {\n @Override\n public void onSuccess(AppSetIdInfo info) {\n // Determine current scope of app set ID.\n int scope = info.getScope();\n\n // Read app set ID value, which uses version 4 of the\n // https://en.wikipedia.org/wiki/Universally_unique_identifier.\n String id = info.getId();\n }\n});\n```"]]