Uzyskiwanie identyfikatora wyświetlania reklam, który użytkownik może zresetować, części Androida Jetpack.
Aby chronić prywatność użytkowników, wszystkie aplikacje na Androida powinny korzystać z identyfikatorów, które użytkownicy mogą resetować. Jednym z takich identyfikatorów jest identyfikator wyświetlania reklam, który jednoznacznie identyfikuje konkretnego użytkownika w przypadkach użycia związanych z reklamami, takich jak personalizacja reklam.
Aby obsługiwać standardowe rozwiązanie do śledzenia reklam na 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 (API na poziomie 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, który jest uwzględniony w bibliotece identyfikatorów reklamowych, określa też standardowy zamiar otwarcia ekranu ustawień, który jest implementowany przez dostawcę reklam. Na tym ekranie ustawień użytkownik może zresetować identyfikator wyświetlania reklam i zrezygnować z personalizacji reklam.
Z tego przewodnika dowiesz się, jak używać modułu klienta biblioteki identyfikatora wyświetlania reklam, aby uzyskiwać spójny identyfikator wyświetlania reklam dla każdego użytkownika urządzenia. W tym przewodniku znajdziesz omówienie architektury biblioteki.
Konfigurowanie aplikacji klienckiej
Wchodząc w interakcję z modułem klienta biblioteki identyfikatora wyświetlania reklam, aplikacja może pobrać spójny identyfikator wyświetlania reklam, który reprezentuje użytkownika wchodzącego w interakcję z aplikacją.
Identyfikator wyświetlania reklam jest reprezentowany w formacie uniwersalnego unikalnego identyfikatora (UUID) w wersji 3 lub w równoważnym formacie 128-bitowym:
38400000-8cf0-11bd-b23e-10b96e40000d
Biblioteka identyfikatora wyświetlania reklam normalizuje wartość zwracaną w razie potrzeby, aby udostępniać identyfikatory w tym formacie.
Aby pobrać identyfikator wyświetlania reklam, który użytkownik może zresetować, wykonaj te czynności:
Sprawdź, czy dostawca reklam jest dostępny, dzwoniąc pod numer
AdvertisingIdClient.isAdvertisingIdProviderAvailable(). Jeśli ta metoda zwraca wartośćfalse, aplikacja musi użyć innego sposobu, aby zrealizować wymagane przypadki użycia śledzenia reklam.Szczegóły identyfikatora reklamy, w tym identyfikator wyświetlania reklam, możesz uzyskać, wywołując funkcję
AdvertisingIdClient.getAdvertisingIdInfo(). Biblioteka identyfikatora wyświetlania reklam wykonuje tę metodę w wątku roboczym i używa 10-sekundowego limitu czasu połączenia.
Poniższy fragment kodu pokazuje, jak pobrać identyfikator reklamowy wraz z innymi informacjami od dostawcy reklam:
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.
}
}
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 umożliwić użytkownikom resetowanie identyfikatora wyświetlania reklam i przełączanie preferencji dotyczących śledzenia reklam.
Moduł klienta komunikuje się z modułem dostawcy, aby pobierać identyfikatory reklamowe i ustawienia użytkownika dotyczące śledzenia reklam.
Jak biblioteka obsługuje wielu dostawców
Urządzenie może obsługiwać jednocześnie wielu dostawców reklam na poziomie systemu. Jeśli biblioteka identyfikatora wyświetlania reklam wykryje taką sytuację, sprawdzi, czy aplikacja zawsze pobiera informacje od tego samego dostawcy, zakładając, że dostawca pozostaje dostępny. Ten proces zapewnia spójność identyfikatora wyświetlania reklam.
Jeśli zbiór dostępnych dostawców reklam zmienia się z czasem, a aplikacja wchodzi w interakcję z innym dostawcą identyfikatorów reklam, wszystkie inne aplikacje klienckie również zaczynają korzystać z tego nowego dostawcy. Aplikacja zachowuje się tak, jakby użytkownik poprosił o zresetowanie identyfikatora wyświetlania reklam.
Biblioteka dostawców identyfikatorów reklamowych używa do określania kolejności dostawców następującej kolejności deterministycznej:
- Dostawcy, którzy poprosili o uprawnienie
androidx.ads.identifier.provider.HIGH_PRIORITY. - Dostawcy, którzy są zainstalowani na urządzeniu najdłużej.
- Usługodawcy, którzy pojawiają się jako pierwsi w porządku alfabetycznym.