Abrufen einer vom Nutzer zurücksetzbaren Werbe-ID Teil von Android Jetpack
Aus Datenschutzgründen sollten alle Android-Apps mit vom Nutzer zurücksetzbaren Kennungen arbeiten. Eine solche Kennung ist die Werbe-ID, mit der ein bestimmter Nutzer für Werbezwecke wie die Personalisierung von Werbung eindeutig identifiziert wird.
Wenn Sie eine standardisierte Lösung für das Anzeigen-Tracking auf allen Geräten, auf denen Ihre App ausgeführt wird, unterstützen möchten, können Sie die Werbe-ID-Bibliothek verwenden. Diese Bibliothek, die auf Geräten mit Android 4.0 (API-Level 14) und höher verfügbar ist, definiert eine Schnittstelle für die Interaktion mit Werbeanbietern auf Systemebene. Über diese Schnittstelle erhält Ihre App einheitliche Werte für die Werbe-ID.
Der Anzeigenanbieter, der in der Advertising ID-Bibliothek enthalten ist, definiert auch eine Standard-Intent zum Öffnen eines Einstellungsbildschirms, den der Anzeigenanbieter implementiert. Auf diesem Einstellungsbildschirm kann der Nutzer seine Werbe-ID zurücksetzen und die Personalisierung von Anzeigen deaktivieren.
In dieser Anleitung wird beschrieben, wie Sie das Clientmodul der Advertising ID-Bibliothek verwenden, um eine einheitliche Werbe-ID pro Geräte-Nutzer zu erhalten. In diesem Leitfaden finden Sie dann einen Überblick über die Architektur der Bibliothek.
Client-App konfigurieren
Durch die Interaktion mit dem Clientmodul der Werbe-ID-Bibliothek kann Ihre App eine einheitliche Werbe-ID abrufen, die den Nutzer repräsentiert, der mit der App interagiert.
Die Werbe-ID wird mit Version 3 des UUID-Formats (Universally Unique Identifier) oder einem entsprechenden 128-Bit-Format dargestellt:
38400000-8cf0-11bd-b23e-10b96e40000d
Die Werbe-ID-Bibliothek normalisiert den Rückgabewert nach Bedarf, um IDs in diesem Format bereitzustellen.
So rufen Sie die vom Nutzer zurücksetzbare Werbe-ID für Ihre App ab:
Mit dem Aufruf von
AdvertisingIdClient.isAdvertisingIdProviderAvailable()können Sie prüfen, ob ein Anzeigenanbieter verfügbar ist. Wenn diese Methodefalsezurückgibt, muss Ihre App eine andere Methode verwenden, um erforderliche Anwendungsfälle für das Ad-Tracking auszuführen.Rufen Sie die Details zur Anzeigenkennung, einschließlich der Werbe-ID, mit
AdvertisingIdClient.getAdvertisingIdInfo()ab. Die Werbe-ID-Bibliothek führt diese Methode in einem Worker-Thread aus und verwendet ein Verbindungs-Timeout von 10 Sekunden.
Das folgende Code-Snippet zeigt, wie die Werbe-ID zusammen mit anderen Informationen vom Anzeigenanbieter abgerufen wird:
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.
}
}
Architektur der Werbe-ID-Bibliothek
Abbildung 1 zeigt die Struktur der Advertising ID-Bibliothek. Die Bibliothek besteht aus den folgenden Modulen:
- Ein Clientmodul, das eine dünne Schicht in Apps ist.
- Ein Anbietermodul, das vom Gerätehersteller zur Verfügung gestellt wird. Bei Implementierungen dieses Moduls muss eine Benutzeroberfläche für die Einstellungen definiert werden, damit Nutzer ihre Werbe-ID zurücksetzen und die Einstellungen für das Anzeigen-Tracking ändern können.
Das Client-Modul kommuniziert mit dem Provider-Modul, um Werbe-IDs und Nutzereinstellungen zur Anzeigenverfolgung abzurufen.
Umgang der Bibliothek mit mehreren Anbietern
Ein Gerät kann gleichzeitig mehrere Anzeigenanbieter auf Systemebene unterstützen. Wenn die Advertising ID-Bibliothek diese Situation erkennt, wird geprüft, ob Ihre App immer Informationen vom selben Anbieter abruft, sofern der Anbieter verfügbar bleibt. So bleibt die Werbe-ID konsistent.
Wenn sich die verfügbaren Anzeigenanbieter im Laufe der Zeit ändern und Ihre App mit einem anderen Anbieter von Anzeigen-IDs interagiert, verwenden alle anderen Client-Apps ebenfalls diesen neuen Anbieter. Ihre App zeigt dasselbe Verhalten wie bei einer Anfrage des Nutzers zum Zurücksetzen seiner Werbe-ID.
Die Anbieterbibliothek für Werbe-IDs verwendet die folgende deterministische Reihenfolge, um die Anbieter zu sortieren:
- Anbieter, die die Berechtigung
androidx.ads.identifier.provider.HIGH_PRIORITYangefordert haben. - Anbieter, die am längsten auf dem Gerät installiert sind.
- Anbieter, die in alphabetischer Reihenfolge zuerst aufgeführt werden.