Uzyskaj możliwy do zresetowania przez użytkownika identyfikator wyświetlania reklam będący częścią Androida Jetpack.
Aby chronić prywatność użytkownika, sprawdzoną metodą jest, aby wszystkie aplikacje na Androida korzystały z identyfikatorów możliwych do zresetowania przez użytkownika. Jednym z takich identyfikatorów jest identyfikator wyświetlania reklam, który jednoznacznie identyfikuje konkretnego użytkownika na potrzeby przypadków użycia związanych z reklamami, takich jak personalizacja reklam.
Aby obsługiwać standardowe rozwiązanie do śledzenia reklam na różnych urządzeniach, na których działa Twoja aplikacja, możesz użyć biblioteki identyfikatora wyświetlania reklam. Ta biblioteka, która jest dostępna na urządzeniach z Androidem 4.0 (poziom interfejsu API 14) lub nowszym, definiuje interfejs do interakcji z dostawcami reklam na poziomie systemu. Ten interfejs umożliwia aplikacji otrzymywanie spójnych wartości identyfikatora wyświetlania reklam.
Dostawca reklam uwzględniony w bibliotece identyfikatorów wyświetlania reklam określa też standardową intencję związaną z otwieraniem ekranu ustawień wdrażanego przez dostawcę. Na tym ekranie użytkownik może zresetować swój identyfikator wyświetlania reklam i zrezygnować z personalizacji reklam.
Z tego przewodnika dowiesz się, jak korzystać z modułu klienta w bibliotece identyfikatorów wyświetlania reklam, aby uzyskiwać ten sam identyfikator wyświetlania reklam dla poszczególnych użytkowników. Niniejszy przewodnik zawiera omówienie architektury biblioteki.
Konfigurowanie aplikacji klienckiej
Gdy wchodzisz w interakcję z modułem klienta w bibliotece identyfikatorów wyświetlania reklam, Twoja aplikacja może pobierać spójny identyfikator wyświetlania reklam reprezentujący użytkownika wchodzącego w interakcję z aplikacją.
Identyfikator wyświetlania reklam jest podawany w wersji 3 formatu UUID lub w odpowiednim formacie 128-bitowym:
38400000-8cf0-11bd-b23e-10b96e40000d
Biblioteka identyfikatorów wyświetlania reklam normalizuje zwracaną wartość w razie potrzeby, aby można było podawać identyfikatory w tym formacie.
Aby pobrać identyfikator wyświetlania reklam możliwy do zresetowania przez użytkownika:
Aby sprawdzić, czy masz dostęp do konkretnego dostawcy reklam, zadzwoń pod numer
AdvertisingIdClient.isAdvertisingIdProviderAvailable()
. Jeśli ta metoda zwraca wartośćfalse
, aplikacja powinna używać innego sposobu śledzenia reklam.Aby uzyskać szczegóły identyfikatora reklamy, w tym identyfikator wyświetlania reklam, wywołaj metodę
AdvertisingIdClient.getAdvertisingIdInfo()
. Biblioteka identyfikatorów wyświetlania reklam wykonuje tę metodę w wątku instancji roboczej i wykorzystuje limit czasu połączenia po 10 sekundach.
Ten fragment kodu pokazuje, jak pobrać identyfikator wyświetlania reklam wraz z innymi informacjami od dostawcy reklam:
Odlotowy
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") }
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. } }
Architektura biblioteki identyfikatora wyświetlania reklam
Rysunek 1 przedstawia strukturę biblioteki identyfikatora wyświetlania reklam. Biblioteka składa się z tych modułów:
- Moduł klienta, czyli cienka warstwa zawarta w aplikacjach.
- Moduł dostawcy udostępniany przez producenta urządzenia. Implementacje tego modułu muszą definiować interfejs ustawień, aby użytkownicy mogli zresetować identyfikator wyświetlania reklam i przełączać ustawienia śledzenia reklam.
Moduł klienta komunikuje się z modułem dostawcy w celu pobierania identyfikatorów wyświetlania reklam i ustawień użytkownika dotyczących śledzenia reklam.
Jak biblioteka obsługuje wielu dostawców
Urządzenie może obsługiwać wielu dostawców reklam na poziomie systemu jednocześnie. Jeśli biblioteka identyfikatorów wyświetlania reklam wykryje taką sytuację, aplikacja zawsze będzie pobierać informacje od tego samego dostawcy (o ile jest on dostępny). Dzięki temu identyfikator wyświetlania reklam jest spójny.
Jeśli zbiór dostępnych dostawców reklam zmienia się z czasem, a Twoja aplikacja wchodzi w interakcję z innym dostawcą identyfikatorów reklam, wszystkie pozostałe aplikacje klienckie również zaczynają korzystać z tego dostawcy. Aplikacja prezentuje to samo działanie, co miałoby miejsce, gdyby użytkownik poprosił o zresetowanie identyfikatora wyświetlania reklam.
Biblioteka dostawców identyfikatora wyświetlania reklam ustala ranking dostawców według tej deterministycznej kolejności:
- Dostawcy, którzy poprosili o uprawnienie
androidx.ads.identifier.provider.HIGH_PRIORITY
. - Dostawcy, którzy są instalowani na urządzeniu najdłużej.
- Usługodawcy, którzy pojawiają się na początku w kolejności alfabetycznej.