Einholung der Zustimmung von europäischen Benutzern

Gemäß der Richtlinie zur EU-Nutzereinwilligung von Google müssen Sie Ihren Nutzern im Europäischen Wirtschaftsraum (EWR) bestimmte Informationen offenlegen und ihre Einwilligung zur Verwendung von Cookies oder anderen lokalen Speicherverfahren, sofern gesetzlich erforderlich, sowie für die Verwendung personenbezogener Daten (z. B. der Anzeigen-ID) zur Anzeigenbereitstellung einholen. Die Richtlinie entspricht den Anforderungen der EU-Datenschutzrichtlinie für elektronische Kommunikation und der EU-Datenschutz-Grundverordnung (DSGVO).

Google bietet ein Consent SDK, um Publisher bei der Umsetzung dieser Richtlinie zu unterstützen. Das Consent SDK ist eine Open-Source-Bibliothek, die Dienstfunktionen zum Einholen der Nutzereinwilligung enthält. Der vollständige Quellcode ist aufGitHub verfügbar.

Von Google ausgelieferte Anzeigen können als personalisiert oder nicht personalisiert kategorisiert werden. Beide erfordern die Einwilligung der Nutzer im EWR. Standardmäßig werden bei Anzeigenanfragen an Google personalisierte Anzeigen ausgeliefert, wobei die Anzeigenauswahl auf den zuvor erhobenen Daten des Nutzers basiert. Google unterstützt auch die Konfiguration von Anzeigenanfragen, um nicht personalisierte Anzeigen auszuliefern. Weitere Informationen zu personalisierten und nicht personalisierten Anzeigen

In diesem Leitfaden wird beschrieben, wie Sie das Consent SDK verwenden, um die Einwilligung der Nutzer einzuholen. Außerdem wird beschrieben, wie Sie die Einwilligung an das Google Mobile Ads SDK weiterleiten, nachdem Sie die Einwilligung eingeholt haben.

Voraussetzungen

Apps können das Consent SDK mit einer Gradle-Abhängigkeit importieren, die auf das Maven-Repository von Google verweist. Wenn Sie dieses Repository verwenden möchten, müssen Sie in der App-Datei build.gradle auf Projektebene darauf verweisen. Öffnen Sie Ihren und suchen Sie einen Abschnitt für allprojects:

Beispiel für build.gradle-Datei auf Projektebene (Auszug)

allprojects {
    repositories {
        google()
        jcenter()
    }
}

Fügen Sie die google()-Anweisung oben hinzu, falls sie noch nicht vorhanden ist.

Öffnen Sie dann die Datei build.gradle auf App-Ebene für Ihre App und suchen Sie nach dem Abschnitt „Abhängigkeiten“.

Beispiel: build.gradle-Datei (Auszug) auf App-Ebene

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.ads.consent:consent-library:1.0.6'
}

Fügen Sie die fett formatierte Zeile oben ein, die Gradle anweist, die neueste Version des Consent SDK abzurufen. Wenn das erledigt ist, speichern Sie die Datei und führen Sie eine Gradle-Synchronisierung durch.

Bevor Sie andere Methoden im Consent SDK verwenden, sollten Sie den Einwilligungsstatus aktualisieren, um sicherzustellen, dass das Consent SDK die neuesten Informationen zu den Anzeigentechnologie-Anbietern hat, die Sie in derAdMob -Benutzeroberfläche ausgewählt haben. Wenn sich die Liste der Anzeigentechnologie-Anbieter seit der letzten Einwilligung des Nutzers geändert hat, wird der Einwilligungsstatus auf „Unbekannt“ zurückgesetzt.

Wenn Sie die Vermittlung nicht nutzen

Wenn Sie die Vermittlung nicht nutzen, haben Sie zwei Möglichkeiten, das Consent SDK zur Einholung der Einwilligung zu implementieren.

Eine Möglichkeit ist, das Consent SDK zu verwenden, um Ihren Nutzern ein von Google gerendertes Einwilligungsformular anzuzeigen. Das Einwilligungsformular enthält eine Liste der Anzeigentechnologie-Anbieter, die Sie auf der AdMob Benutzeroberfläche ausgewählt haben. Im Consent SDK wird die Antwort der Nutzereinwilligung gespeichert.

Die andere Möglichkeit besteht darin, mit dem Consent SDK dynamisch die vollständige Liste der Anzeigentechnologie-Anbieter aus AdMobabzurufen, wie in der vom Publisher verwalteten Einwilligung erläutert. In diesem Fall müssen Sie jedoch festlegen, wie die Liste der Anbieter für Ihre Nutzer verfügbar gemacht werden soll, und Ihren Nutzern ein eigenes Einwilligungsformular vorlegen.

Sobald der Nutzer eine Einwilligungsoption ausgewählt hat, können Sie das Consent SDK bitten, die Einwilligung des Nutzers zu speichern, wie unter Vom Publisher verwaltete Einwilligung speichern erläutert.

Wenn ein Nutzer eingewilligt hat, dass er nur nicht personalisierte Anzeigen erhalten möchte, muss er nach der Einwilligung die Einwilligung zum Google Mobile Ads SDK weiterleiten.

Wenn Sie AdMob die Vermittlung nutzen

Mit dem Consent SDK können Sie dynamisch eine vollständige Liste der Anzeigentechnologie-Anbieter von AdMobabrufen. Dies wird unter Vom Publisher verwaltete Einwilligungserhebung näher erläutert. Sie müssen festlegen, welche zusätzlichen Anzeigentechnologie-Anbieter aus anderen Werbenetzwerken Ihren Nutzern zur Einwilligung angezeigt werden müssen.

Als App-Entwickler müssen Sie für die vom Consent SDK zurückgegebenen Anzeigentechnologie-Anbieter und für die Anbieter anderer Werbenetzwerke die Nutzereinwilligung einholen. Außerdem müssen Sie manuell Antworten auf Nutzereinwilligungen speichern und die Einwilligung zum Google Mobile Ads SDK weiterleiten, wenn der Nutzer in die Verwendung von nicht personalisierten Anzeigen eingewilligt hat.

Google kann derzeit keine Einwilligung für Vermittlungsnetzwerke einholen und verarbeiten. Daher müssen Sie die Einwilligung für jedes Werbenetzwerk separat einholen und verarbeiten. Ausführliche Informationen zur Implementierung finden Sie im Integrationsleitfaden für die einzelnen Vermittlungspartner.

Einwilligungsstatus aktualisieren

Wenn Sie das Consent SDK verwenden, sollten Sie den Status der Einwilligung eines Nutzers bei jedem App-Start ermitteln. Rufen Sie dazu requestConsentInfoUpdate() auf einer Instanz von ConsentInformation auf.

import com.google.ads.consent.*;

public class MainActivity extends Activity {
    ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        ConsentInformation consentInformation = ConsentInformation.getInstance(context);
        String[] publisherIds = {"pub-0123456789012345"};
        consentInformation.requestConsentInfoUpdate(publisherIds, new ConsentInfoUpdateListener() {
            @Override
            public void onConsentInfoUpdated(ConsentStatus consentStatus) {
                 // User's consent status successfully updated.
            }

            @Override
            public void onFailedToUpdateConsentInfo(String errorDescription) {
                 // User's consent status failed to update.
            }
        });
        ...
    }
    ...
}

Der Aufruf von requestConsentInfoUpdate() erfordert zwei Argumente:

  • Ein Array mit gültigen, vollständig aktivierten Publisher-IDs, von denen Ihre App Anzeigen anfordert. Publisher-ID ermitteln

  • Eine Instanz von ConsentInfoUpdateListener.

Wenn die Einwilligungsinformationen erfolgreich aktualisiert wurden, wird der aktualisierte Einwilligungsstatus über die Methode onConsentInfoUpdated() von ConsentInfoUpdateListener angegeben. Der zurückgegebene ConsentStatus-Wert kann die folgenden Werte enthalten:

Einwilligungsstatus Definition
ConsentStatus.PERSONALIZED Der Nutzer hat seine Einwilligung für personalisierte Werbung erteilt.
ConsentStatus.NON_PERSONALIZED Der Nutzer hat seine Einwilligung für nicht personalisierte Anzeigen erteilt.
ConsentStatus.UNKNOWN Der Nutzer hat die Einwilligung für personalisierte oder nicht personalisierte Anzeigen weder erteilt noch abgelehnt.

Sobald die Einwilligungsinformationen erfolgreich aktualisiert wurden, kannst du anhand von ConsentInformation.getInstance(context).isRequestLocationInEeaOrUnknown() prüfen, ob sich der Nutzer im Europäischen Wirtschaftsraum befindet oder der Anfragestandort unbekannt ist.

Wenn die Methode isRequestLocationInEeaOrUnknown() false zurückgibt, befindet sich der Nutzer nicht im Europäischen Wirtschaftsraum und die Einwilligung ist gemäß der Richtlinie zur EU-Nutzereinwilligung nicht erforderlich. Sie können Anzeigenanfragen an das Google Mobile Ads SDK senden.

Wenn die Methode isRequestLocationInEeaOrUnknown() true zurückgibt:

Google #39;s Consent SDK. bietet zwei Möglichkeiten, die Einwilligung der Nutzer einzuholen:

Gewähren Sie Nutzern die Möglichkeit, die Einwilligung zu ändern oder zu widerrufen.

Das von Google gerenderte Einwilligungsformular ist ein konfigurierbares Vollbildformular, das über den Inhalten deiner App eingeblendet wird. Sie können das Formular so konfigurieren, dass dem Nutzer Kombinationen der folgenden Optionen angezeigt werden:

  • Einwilligung zum Aufrufen personalisierter Anzeigen
  • Einwilligung zum Aufrufen nicht personalisierter Anzeigen
  • Kostenpflichtige Version der App verwenden, statt Werbung anzusehen

Du solltest den Text für die Einwilligung sorgfältig lesen. Standardmäßig wird eine Meldung angezeigt, die möglicherweise angemessen ist, wenn du Google zur Monetarisierung deiner App verwendest. Wir können dir jedoch keine Rechtsberatung zum angemessenen Einwilligungstext anbieten. Wenn Sie den Einwilligungstext des von Google gerenderten Einwilligungsformulars aktualisieren möchten, ändern Sie die Datei consentform.html im Consent SDK nach Bedarf.

Das von Google gerenderte Einwilligungsformular wird mit der Klasse ConsentForm konfiguriert und angezeigt. Der folgende Code zeigt, wie Sie eine ConsentForm mit allen drei Einwilligungsoptionen erstellen:

URL privacyUrl = null;
try {
    // TODO: Replace with your app's privacy policy URL.
    privacyUrl = new URL("https://www.your.com/privacyurl");
} catch (MalformedURLException e) {
    e.printStackTrace();
    // Handle error.
}
ConsentForm form = new ConsentForm.Builder(context, privacyUrl)
    .withListener(new ConsentFormListener() {
        @Override
        public void onConsentFormLoaded() {
            // Consent form loaded successfully.
        }

        @Override
        public void onConsentFormOpened() {
            // Consent form was displayed.
        }

        @Override
        public void onConsentFormClosed(
                ConsentStatus consentStatus, Boolean userPrefersAdFree) {
            // Consent form was closed.
        }

        @Override
        public void onConsentFormError(String errorDescription) {
            // Consent form error.
        }
    })
    .withPersonalizedAdsOption()
    .withNonPersonalizedAdsOption()
    .withAdFreeOption()
    .build();

Mit den oben genannten Methoden wird das von Google gerenderte Einwilligungsformular mit den folgenden Optionen vorbereitet:

withListener()
Registriert einen Listener für den ConsentForm. Jede der überschreibbaren Methoden in ConsentFormListener entspricht einem Ereignis im Lebenszyklus des Einwilligungsformulars.
Überschreibbare Methoden
onConsentFormLoaded Das Einwilligungsformular wurde geladen.
onConsentFormError Das Einwilligungsformular konnte nicht geladen werden. Der Parameter errorDescription enthält eine Beschreibung des Fehlers.
onConsentFormOpened Das Formular für die Einwilligung wurde geöffnet.
onConsentFormClosed Das Formular zur Nutzereinwilligung wurde geschlossen. Die Parameter der Methode enthalten folgende Informationen:
  • consentStatus ist ein ConsentStatus-Wert, der den aktualisierten Einwilligungsstatus des Nutzers beschreibt.
  • userPrefersAdFree hat den Wert true, wenn der Nutzer statt einer Anzeige eine kostenpflichtige Version der App verwendet.
withPersonalizedAdsOption()
Gibt an, dass das Einwilligungsformular eine personalisierte Anzeigenoption enthalten sollte.
withNonPersonalizedAdsOption()
Gibt an, dass das Einwilligungsformular eine Option für nicht personalisierte Anzeigen enthalten soll.
withAdFreeOption()
Gibt an, dass das Einwilligungsformular eine Option für werbefreie Apps enthalten soll.

Nachdem Sie ein ConsentForm-Objekt erstellt haben, laden Sie das Einwilligungsformular, indem Sie die Methode load() von ConsentForm aufrufen:

form.load();

Um dem Nutzer das von Google gerenderte Einwilligungsformular zu präsentieren, rufen Sie show() für eine Instanz von ConsentForm auf, wie unten gezeigt:

form.show();

Nachdem der Nutzer eine Option ausgewählt und das Formular geschlossen hat, speichert das Consent SDK die Auswahl des Nutzers und löst das Ereignis onConsentFormClosed aus. Sie können auf dieses Ereignis warten und die Einwilligung zum Google Mobile Ads SDK weiterleiten.

Vom Publisher verwaltete Einwilligungssammlung

Wenn Sie die Einwilligung selbst einholen möchten, können Sie die Methode getAdProviders() der Klasse ConsentInformation verwenden, um die Anzeigentechnologie-Anbieter abzurufen, die den in Ihrer App verwendeten Publisher-IDs zugeordnet sind. Beachten Sie, dass für die vollständige Liste der für Ihre Publisher-IDs konfigurierten Anzeigentechnologie-Anbieter eine Einwilligung erforderlich ist.

Bevor Sie getAdProviders() aufrufen können, müssen Sie auf die Methode onConsentInfoUpdate() von ConsentInfoUpdateListener warten, wie im Abschnitt Status der Einwilligung aktualisieren beschrieben.

List<AdProvider> adProviders =
    ConsentInformation.getInstance(context).getAdProviders();

Sie können dann mithilfe der Liste der Anzeigentechnologie-Anbieter die Einwilligung selbst einholen.

Nachdem du die Einwilligung erhalten hast, nimm mit der Methode setConsentStatus() der Klasse ConsentInformation die ConsentStatus der Antwort des Nutzers auf.

ConsentInformation.getInstance(context)
    .setConsentStatus(ConsentStatus.PERSONALIZED);

Nachdem Sie die Einwilligung für das Consent SDK gemeldet haben, können Sie die Einwilligung an das Google Mobile Ads SDK weiterleiten.

Damit Nutzer ihre Einwilligung aktualisieren können, wiederholen Sie einfach die Schritte im Abschnitt Einwilligung einholen, wenn der Nutzer seinen Einwilligungsstatus aktualisieren möchte.

Wenn einem Verlag oder Webpublisher bewusst ist, dass der Nutzer noch nicht das gültige Mindestalter erreicht hat, muss in allen Anzeigenanfragen das Tag „TFUA“ (Tag For Users under the Age of Consent in Europe, TFUA) angegeben werden. Wenn Sie dieses Tag in alle Anzeigenanfragen Ihrer App einfügen möchten,rufen Sie setTagForUnderAgeOfConsent(true) auf. Diese Einstellung gilt für alle zukünftigen Anzeigenanfragen.

ConsentInformation.getInstance(context).setTagForUnderAgeOfConsent(true);

Sobald die TFUA-Einstellung aktiviert ist, wird das von Google gerenderte Einwilligungsformular nicht mehr geladen. Anzeigenanfragen mit TFUA sind dann nicht mehr für personalisierte Anzeigen und Remarketing zulässig. TFUA deaktiviert Anfragen an Anzeigentechnologie-Drittanbieter wie Anzeigen-Messpixel und Ad-Server von Drittanbietern.

Rufen Sie setTagForUnderAgeOfConsent(false) auf, um TFUA aus Anzeigenanfragen zu entfernen.

Test

Das Consent SDK verhält sich je nach Wert von ConsentInformation.getInstance(context).isRequestLocationInEeaOrUnknown() unterschiedlich. Das Einwilligungsformular wird beispielsweise nicht geladen, wenn sich der Nutzer nicht im EWR befindet.

Das Consent SDK unterstützt Debug-Optionen, die Sie festlegen können, bevor Sie andere Methoden im Consent SDK aufrufen. So lassen sich Tests innerhalb und außerhalb des EWR vereinfachen.

  1. Folgen Sie der Anleitung im Abschnitt Status der Einwilligung aktualisieren, um requestConsentInfoUpdate aufzurufen. Führen Sie dann Ihre Anwendung aus. Prüfen Sie die Logcat-Ausgabe auf das folgende Log:

    I/ConsentInformation: Use
    ConsentInformation.getInstance(context).addTestDevice("33BE2250B43518CCDA7DE426D04EE231")
    to get test ads on this device.
  2. Legen Sie mithilfe der Werbe-ID von logcat Ihr Gerät als Testgerät fest:

    ConsentInformation.getInstance(context).addTestDevice("33BE2250B43518CCDA7DE426D04EE231");
  3. Rufen Sie schließlich setDebugGeography auf, um Ihre bevorzugte Region für Testzwecke festzulegen.

    // Geography appears as in EEA for test devices.
    ConsentInformation.getInstance(context).
        setDebugGeography(DebugGeography.DEBUG_GEOGRAPHY_EEA);
    // Geography appears as not in EEA for debug devices.
    ConsentInformation.getInstance(context).
        setDebugGeography(DebugGeography.DEBUG_GEOGRAPHY_NOT_EEA);

Nachdem Sie diese Schritte ausgeführt haben, wird bei Aufrufen zum Aktualisieren des Einwilligungsstatus die Region für die Fehlerbehebung berücksichtigt.

Der Code in diesem Abschnitt kann mit jeder Version des Google Mobile Ads SDK verwendet werden. Es kann auch verwendet werden, unabhängig davon, ob Sie das Consent SDK zum Einholen der Einwilligung verwendet haben.

Standardmäßig werden über das Google Mobile Ads SDK personalisierte Anzeigen ausgeliefert. Wenn ein Nutzer eingewilligt hat, nur nicht personalisierte Anzeigen zu erhalten, können Sie ein AdRequest-Objekt so konfigurieren, dass nur nicht personalisierte Anzeigen angefordert werden. Mit dem folgenden Code werden nicht personalisierte Anzeigen angefragt, unabhängig davon, ob sich der Nutzer im EWR befindet:

Java

Bundle extras = new Bundle();
extras.putString("npa", "1");

AdRequest request = new AdRequest.Builder()
    .addNetworkExtrasBundle(AdMobAdapter.class, extras)
    .build();

Kotlin

val extras = Bundle()
extras.putString("npa", "1")

val request = AdRequest.Builder()
    .addNetworkExtrasBundle(AdMobAdapter::class.java, extras)
    .build()

Wenn nicht personalisierte Anzeigen angefordert werden, enthält die Anzeigenanfrage-URL derzeit &npa=1. Es handelt sich jedoch um eine interne Implementierung des Google Mobile Ads SDK, die sich ändern kann.

App-Messung verzögern (optional)

Das Google Mobile Ads SDK initialisiert standardmäßig die App-Messung und sendet unmittelbar nach dem Start der App Ereignisdaten auf Nutzerebene an Google. Dieses Verhalten ermöglicht es Ihnen, AdMob-Nutzermesswerte zu aktivieren, ohne zusätzliche Codeänderungen vornehmen zu müssen.

Falls die Nutzereinwilligung für Ihre App erforderlich ist, bevor diese Ereignisse gesendet werden können, können Sie die App-Messung verzögern, bis Sie das Mobile Ads SDK explizit initialisieren oder eine Anzeige laden.

Fügen Sie das folgende <meta-data>-Tag in Ihre AndroidManifest.xml ein, um die App-Messung zu verzögern.

<manifest>
     <application>
        <!-- Delay app measurement until MobileAds.initialize() is called. -->
        <meta-data
            android:name="com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT"
            android:value="true"/>
    </application>
</manifest>

FAQ

Wie viele Anzeigentechnologie-Anbieter unterstützt das Consent SDK?
Mit dem Consent SDK gibt es keine Begrenzung für die Anzahl der Anzeigentechnologie-Anbieter, die ein Publisher aktiviert.
Wird die Liste der vom SDK zurückgegebenen Anzeigentechnologie-Anbieter automatisch aktualisiert, wenn ich meine Auswahl in der AdMob Benutzeroberfläche ändere?
Wenn Sie Änderungen an der Liste der Anzeigentechnologie-Anbieter in derAdMob Benutzeroberfläche vornehmen, werden diese Änderungen innerhalb von etwa einer Stunde auf den Ad-Servern von Google übernommen.