ユーザーがリセット可能な広告 ID を取得する Android Jetpack。
ユーザーのプライバシーを保護するため、すべての Android アプリでユーザーがリセット可能な識別子を使用することをおすすめします。そうした識別子の 1 つに広告 ID があります。これは広告 ID です。 広告ユースケースで特定のユーザーを一意に識別する ID です。 パーソナライズできます
標準の広告トラッキング ソリューションを、 広告 ID ライブラリを使用できます。 このライブラリは、Android 4.0(API レベル 14)以降を実行しているデバイスで使用でき、システムレベルの広告プロバイダとやり取りするためのインターフェースを定義します。このインターフェースにより、アプリは一貫した広告 ID 値を受け取ることができます。
広告 ID ライブラリに含まれる広告プロバイダは、 標準インテントを使用して、広告プロバイダが実装する設定画面を開くことができます。 この設定画面では、ユーザーが広告 ID をリセットしたり、広告のパーソナライズをオプトアウトしたりできます。
このガイドでは、広告 ID ライブラリのクライアント モジュールの使用方法について説明します。 デバイス ユーザーごとに一貫した広告 ID を取得する。このガイド 次に、ライブラリのアーキテクチャの概要を示します。
クライアント アプリを構成する
広告 ID ライブラリのクライアント モジュールと対話することで、アプリは、アプリを操作しているユーザーを表す一貫した広告 ID を取得できます。
広告 ID は、ユニバーサル 識別子(UUID) 形式または 同等の 128 ビット形式:
38400000-8cf0-11bd-b23e-10b96e40000d
広告 ID ライブラリは、この形式を使用して ID を提供するために、必要に応じて戻り値を正規化します。
アプリでユーザーがリセット可能な広告 ID を取得するには、次の手順を実行します。
電話して広告プロバイダが利用できるかどうかを確認する
AdvertisingIdClient.isAdvertisingIdProviderAvailable()
。 このメソッドがfalse
を返した場合、アプリは別の手段を使用して、必要な広告トラッキングのユースケースを実行します。次の呼び出しを行って、広告 ID を含む広告 ID の詳細を取得します。
AdvertisingIdClient.getAdvertisingIdInfo()
。広告 ID ライブラリ ワーカー スレッドでこのメソッドを実行し、10 秒の接続タイムアウトを使用します。
次のコード スニペットは、広告 ID を取得する方法を示しています。 広告プロバイダからのその他の情報も表示されます。
app/build.gradle
Groovy
dependencies { implementation 'androidx.ads:ads-identifier:1.0.0-alpha01' // Used for the calls to addCallback() in the snippets on this page. implementation 'com.google.guava:guava:28.0-android' }
Kotlin
dependencies { implementation("androidx.ads:ads-identifier:1.0.0-alpha01") // Used for the calls to addCallback() in the snippets on this page. implementation("com.google.guava:guava:28.0-android") }
MyAdIdClient
Kotlin
// Used for the call to addCallback() within this snippet. import com.google.common.util.concurrent.Futures.addCallback private fun determineAdvertisingInfo() { if (AdvertisingIdClient.isAdvertisingIdProviderAvailable()) { val advertisingIdInfoListenableFuture = AdvertisingIdClient.getAdvertisingIdInfo(applicationContext) addCallback(advertisingIdInfoListenableFuture, object : FutureCallback<AdvertisingIdInfo> { override fun onSuccess(adInfo: AdvertisingIdInfo?) { val id: String = adInfo?.id val providerPackageName: String = adInfo?.providerPackageName val isLimitTrackingEnabled: Boolean = adInfo?.isLimitTrackingEnabled } // Any exceptions thrown by getAdvertisingIdInfo() // cause this method to be called. override fun onFailure(t: Throwable) { Log.e("MY_APP_TAG", "Failed to connect to Advertising ID provider.") // Try to connect to the Advertising ID provider again or fall // back to an ad solution that doesn't require using the // Advertising ID library. } }, Executors.newSingleThreadExecutor()) } else { // The Advertising ID client library is unavailable. Use a different // library to perform any required ad use cases. } }
Java
// Used for the call to addCallback() within this snippet. import com.google.common.util.concurrent.Futures; private void determineAdvertisingInfo() { if (AdvertisingIdClient.isAdvertisingIdProviderAvailable()) { ListenableFuture<AdvertisingIdInfo> advertisingIdInfoListenableFuture = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext()); Futures.addCallback(advertisingIdInfoListenableFuture, new FutureCallback<AdvertisingIdInfo>() { @Override public void onSuccess(AdvertisingIdInfo adInfo) { String id = adInfo.getId(); String providerPackageName = adInfo.getProviderPackageName(); boolean isLimitTrackingEnabled = adInfo.isLimitTrackingEnabled(); // Any exceptions thrown by getAdvertisingIdInfo() // cause this method to be called. @Override public void onFailure(Throwable throwable) { Log.e("MY_APP_TAG", "Failed to connect to Advertising ID provider."); // Try to connect to the Advertising ID provider again // or fall back to an ad solution that doesn't require // using the Advertising ID library. } }); } else { // The Advertising ID client library is unavailable. Use a different // library to perform any required ad use cases. } }
広告 ID ライブラリのアーキテクチャ
図 1 は、広告 ID ライブラリの構造を示しています。ライブラリは、次のモジュールで構成されています。
- クライアント モジュール。アプリに含まれるシンレイヤです。
- プロバイダ モジュール。デバイス メーカーが提供しています。 このモジュールの実装では、設定 UI を定義してユーザーに 広告 ID をリセットし、広告トラッキング設定を切り替えることができる。
クライアント モジュールはプロバイダ モジュールと通信して、広告トラッキングに関する広告 ID とユーザー設定を取得します。
ライブラリで複数のプロバイダを処理する方法
1 つのデバイスで、システムレベルで複数の広告プロバイダを できます。広告 ID ライブラリがこの状況を検出した場合、プロバイダが利用可能であると仮定して、アプリが常に同じプロバイダから情報を取得するようにします。この処理により、広告 ID の一貫性が保たれます。
利用可能な広告プロバイダのグループが時間の経過とともに変化し、アプリ 別の広告 ID プロバイダとやり取りした場合、他のすべてのクライアント アプリは その新しいプロバイダを使用しますお客様のアプリは、 ユーザーが広告 ID のリセットをリクエストした場合に発生する。
広告 ID プロバイダ ライブラリでは、次の決定的な順序を使用して、 プロバイダをランク付けします。
- 以前に
androidx.ads.identifier.provider.HIGH_PRIORITY
権限。 - 最長時間デバイスにインストールされていたプロバイダ。
- アルファベット順で最初に表示されるプロバイダ。