Fordern Sie eine vom Nutzer zurücksetzbare Werbe-ID an, die Teil von Android Jetpack ist.

Aus Datenschutzgründen hat es sich bei allen Android-Apps bewährt, vom Nutzer zurücksetzbare Kennungen zu verwenden. Eine solche Kennung ist eine Werbe-ID, mit der ein bestimmter Nutzer für Anwendungsfälle wie personalisierte Werbung eindeutig identifiziert werden kann.

Sie können die Werbe-ID-Bibliothek verwenden, um eine standardisierte Lösung für das Anzeigen-Tracking auf allen Geräten zu unterstützen, auf denen Ihre App ausgeführt wird. Diese Bibliothek ist auf Geräten mit Android 4.0 (API-Level 14) und höher verfügbar und definiert eine Schnittstelle für die Interaktion mit Anzeigenanbietern auf Systemebene. Über diese Oberfläche kann Ihre App konsistente Werbe-ID-Werte erhalten.

Der in der Werbe-ID-Bibliothek enthaltene Anzeigenanbieter definiert auch einen Standard-Intent zum Öffnen eines Einstellungsbildschirms, den der Anzeigenanbieter implementiert. Auf diesem Einstellungsbildschirm können Nutzer ihre Werbe-ID zurücksetzen und personalisierte Werbung deaktivieren.

In diesem Leitfaden wird erläutert, wie Sie mithilfe des Clientmoduls der Werbe-ID-Bibliothek eine konsistente Werbe-ID für jeden Nutzer des Geräts abrufen. Anschließend bietet dieser Leitfaden einen Überblick über die Architektur der Bibliothek.

Clientanwendung konfigurieren

Durch die Interaktion mit dem Clientmodul der Werbe-ID-Bibliothek kann Ihre App eine konsistente 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:

  1. Prüfen Sie, ob ein Anzeigenanbieter verfügbar ist, indem Sie AdvertisingIdClient.isAdvertisingIdProviderAvailable() aufrufen. Wenn diese Methode false zurückgibt, sollte Ihre App andere Methoden zum Ausführen aller erforderlichen Anwendungsfälle für das Anzeigen-Tracking verwenden.

  2. Die Details zur Anzeigen-ID einschließlich der Werbe-ID können Sie durch Aufrufen von AdvertisingIdClient.getAdvertisingIdInfo() abrufen. Die Werbe-ID-Bibliothek führt diese Methode in einem Worker-Thread aus und verwendet ein Verbindungszeitlimit von 10 Sekunden.

Im folgenden Code-Snippet sehen Sie, wie die Werbe-ID zusammen mit anderen Informationen vom Anzeigenanbieter abgerufen wird:

app/build.gradle

Groovig

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")
}

MeinAdIdClient

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

Architekturdiagramm
Abbildung 1: Architektur der Werbe-ID-Bibliothek

In Abbildung 1 ist die Struktur der Werbe-ID-Bibliothek dargestellt. Die Bibliothek besteht aus den folgenden Modulen:

  • Ein Clientmodul ist eine schlanke Schicht in Apps.
  • Ein Anbietermodul, das vom Gerätehersteller bereitgestellt wird. Für die Implementierungen dieses Moduls muss eine Einstellungs-UI definiert werden, über die Nutzer ihre Werbe-ID zurücksetzen und die Einstellungen für das Anzeigen-Tracking ändern können.

Das Clientmodul kommuniziert mit dem Anbietermodul, um Werbe-IDs und Nutzereinstellungen in Bezug auf das Anzeigen-Tracking abzurufen.

Umgang der Bibliothek mit mehreren Anbietern

Ein Gerät kann mehrere Anzeigenanbieter auf Systemebene gleichzeitig unterstützen. Wenn die Werbe-ID-Bibliothek eine solche Situation erkennt, wird dafür gesorgt, dass Ihre App Informationen immer vom selben Anbieter abruft, vorausgesetzt, der Anbieter bleibt verfügbar. Dadurch bleibt die Werbe-ID einheitlich.

Wenn sich die verfügbaren Anzeigenanbieter im Laufe der Zeit ändern und Ihre App mit einem anderen Anbieter von Anzeigen-IDs interagiert, wird dieser neue Anbieter ebenfalls für alle anderen Client-Apps verwendet. Ihre App zeigt dasselbe Verhalten wie wenn der Nutzer das Zurücksetzen seiner Werbe-ID angefordert hätte.

Die Bibliothek der Werbe-ID-Anbieter verwendet die folgende deterministische Reihenfolge, um die Anbieter in eine bestimmte Reihenfolge zu bringen:

  1. Anbieter, die die Berechtigung androidx.ads.identifier.provider.HIGH_PRIORITY angefordert haben.
  2. Anbieter, die auf dem Gerät am längsten installiert sind.
  3. Anbieter, die in alphabetischer Reihenfolge zuerst aufgeführt werden.