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 auf GitHub

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

CocoaPods (bevorzugt)

Am einfachsten lassen sich die SDKs mit CocoaPods in ein iOS-Projekt importieren. Öffnen Sie die Podfile-Datei Ihres Projekts und fügen Sie dem Ziel Ihrer App diese Zeile hinzu:

pod 'PersonalizedAdConsent'

Führen Sie dann in der Befehlszeile folgenden Befehl aus:

pod install --repo-update

Wenn Sie CocoaPods noch nicht kennen, finden Sie in der offiziellen Dokumentation Informationen zum Erstellen und Verwenden von Podfiles.

Manueller Download

Sie können auch die Quelle des SDK direkt herunterladen oder klonen und so in Ihr Projekt aufnehmen:

  1. Ziehen Sie die Datei PersonalizedAdConsent.xcodeproj aus dem Finder in Ihr Projekt.

  2. Rufen Sie den Tab Build Phases (Build-Phasen) auf. Klicken Sie unter Zielabhängigkeiten auf die Schaltfläche + und fügen Sie das Ziel PersonalisierteAdConsent hinzu.

  3. Klicken Sie mit der rechten Maustaste auf Ihr Projekt und wählen Sie Add Files to "MyProject" aus. Rufen Sie PersonalizedAdConsent.bundle auf. Klicke auf das Kästchen Ordnerreferenzen erstellen.

    Wenn dies abgeschlossen ist, sollte PersonalizedAdConsent.bundle auf dem Tab Build-Phasen im Abschnitt Bundle-Ressourcen kopieren aufgeführt sein.

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 requestConsentInfoUpdateForPublisherIdentifiers:completionHandler: auf einer Instanz von PACConsentInformation auf.

Swift

import PersonalizedAdConsent
...
class ViewController: UIViewController {

  override func viewDidLoad() {
    super.viewDidLoad()
    PACConsentInformation.sharedInstance.
    requestConsentInfoUpdate(
    forPublisherIdentifiers: ["pub-0123456789012345"])
    {(_ error: Error?) -> Void in
      if let error = error {
        // Consent info update failed.
      } else {
        // Consent info update succeeded. The shared PACConsentInformation
        // instance has been updated.
      }
    }
  }

Objective-C

#import <PersonalizedAdConsent/PersonalizedAdConsent.h>
...
@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  [PACConsentInformation.sharedInstance
      requestConsentInfoUpdateForPublisherIdentifiers:@[ @"pub-0123456789012345" ]
          completionHandler:^(NSError *_Nullable error) {
            if (error) {
              // Consent info update failed.
            } else {
              // Consent info update succeeded. The shared PACConsentInformation
              // instance has been updated.
            }
          }];
}

Der Aufruf von requestConsentInfoUpdateForPublisherIdentifiers:completionHandler: erfordert zwei Argumente:

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

  • Ein Block, der ein NSError als Eingabeparameter akzeptiert, der Informationen zu einer fehlgeschlagenen Anfrage zum Aktualisieren der Einwilligung liefert.

Wenn die Einwilligungsinformationen erfolgreich aktualisiert wurden, gibt PACConsentInformation.sharedInstance.consentStatus den aktualisierten Einwilligungsstatus an. Folgende Werte sind möglich:

Einwilligungsstatus Definition
PACConsentStatusPersonalized Der Nutzer hat seine Einwilligung für personalisierte Werbung erteilt.
PACConsentStatusNonPersonalized Der Nutzer hat seine Einwilligung für nicht personalisierte Anzeigen erteilt.
PACConsentStatusUnknown Der Nutzer hat die Einwilligung für personalisierte oder nicht personalisierte Anzeigen weder erteilt noch abgelehnt.

Sobald die Einwilligungsinformationen aktualisiert wurden, kannst du anhand von PACConsentInformation.sharedInstance.requestLocationInEEAOrUnknown auch prüfen, ob sich der Nutzer im Europäischen Wirtschaftsraum befindet oder der Anfragestandort unbekannt ist.

Wenn die Property requestLocationInEEAOrUnknown den Wert NO hat, 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 das Attribut requestLocationInEEAOrUnknown den Wert YES hat:

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 PACConsentForm konfiguriert und angezeigt. Der folgende Code zeigt, wie ein PACConsentForm mit allen drei Formularoptionen erstellt wird:

Swift

// TODO: Replace with your app's privacy policy url.
guard let privacyUrl = URL(string: "https://www.your.com/privacyurl"),
  let form = PACConsentForm(applicationPrivacyPolicyURL: privacyUrl) else {
    print("incorrect privacy URL.")
    return
}
form.shouldOfferPersonalizedAds = true
form.shouldOfferNonPersonalizedAds = true
form.shouldOfferAdFree = true

Objective-C

// TODO: Replace with your app's privacy policy url.
NSURL *privacyURL = [NSURL URLWithString:@"https://www.your.com/privacyurl"];
PACConsentForm *form = [[PACConsentForm alloc] initWithApplicationPrivacyPolicyURL:privacyURL];
form.shouldOfferPersonalizedAds = YES;
form.shouldOfferNonPersonalizedAds = YES;
form.shouldOfferAdFree = YES;

Die Attribute von PACConsentForm werden weiter unten beschrieben:

shouldOfferPersonalizedAds
Gibt an, ob das Einwilligungsformular eine personalisierte Anzeigenoption anzeigen soll. Die Standardeinstellung ist YES.
shouldOfferNonPersonalizedAds
Gibt an, ob das Einwilligungsformular eine Option für nicht personalisierte Anzeigen enthalten soll. Die Standardeinstellung ist YES.
shouldOfferAdFree
Gibt an, ob das Einwilligungsformular eine App-Option ohne Werbeanzeigen enthalten soll. Die Standardeinstellung ist NO.

Nachdem Sie ein PACConsentForm-Objekt erstellt und konfiguriert haben, laden Sie das Einwilligungsformular, indem Sie die Methode loadWithCompletionHandler: von PACConsentForm aufrufen:

Swift

form.load {(_ error: Error?) -> Void in
  print("Load complete.")
  if let error = error {
    // Handle error.
    print("Error loading form: \(error.localizedDescription)")
  } else {
    // Load successful.
  }
}

Objective-C

[form loadWithCompletionHandler:^(NSError *_Nullable error) {
  NSLog(@"Load complete. Error: %@", error);
  if (error) {
    // Handle error.
  } else {
    // Load successful.
  }
}];

Um dem Nutzer das von Google gerenderte Einwilligungsformular zu präsentieren, rufen Sie presentFromViewController:dismissCompletion: für eine geladene PACConsentForm auf, wie unten gezeigt:

Swift

form.present(from: self) { (error, userPrefersAdFree) in
      if let error = error {
        // Handle error.
      } else if userPrefersAdFree {
        // User prefers to use a paid version of the app.
      } else {
        // Check the user's consent choice.
        let status =
             PACConsentInformation.sharedInstance.consentStatus
      }
    }

Objective-C

 [form presentFromViewController:self
     dismissCompletion:^(NSError *_Nullable error, BOOL userPrefersAdFree) {
       if (error) {
         // Handle error.
       } else if (userPrefersAdFree) {
         // The user prefers to use a paid version of the app.
       } else {
         // Check the user's consent choice.
         PACConsentStatus status =
             PACConsentInformation.sharedInstance.consentStatus;
       }
     }];

Der Aufruf von presentFromViewController:dismissCompletion: erfordert zwei Argumente:

  • Ein UIViewController, aus dem die Präsentation stattfinden soll.

  • Ein Block, der NSError und BOOL als Eingabeparameter akzeptiert. Unter NSError finden Sie Informationen, falls beim Anzeigen des Einwilligungsformulars ein Fehler aufgetreten ist. Der BOOL von userPrefersAdFree hat den Wert YES, wenn der Nutzer sich für die Nutzung einer kostenpflichtigen Version der App entschieden hat, anstatt Anzeigen anzusehen.

Nachdem der Nutzer eine Option ausgewählt und das Formular geschlossen hat, speichert das Consent SDK die Auswahl des Nutzers und ruft den Block dismissCompletion: auf. Du kannst dir die Auswahl des Nutzers durchlesen und die Einwilligung zum Google Mobile Ads SDK einreichen.

Vom Publisher verwaltete Einwilligungssammlung

Wenn Sie die Einwilligung selbst erteilen möchten, können Sie die Property adProviders der Klasse PACConsentInformation verwenden, um die Anzeigentechnologie-Anbieter abzurufen, die den in Ihrer App verwendeten Publisher-IDs zugeordnet sind. Hinweis: Für die vollständige Liste der für Ihre Publisher-IDs konfigurierten Anzeigentechnologie-Anbieter ist eine Einwilligung erforderlich.

Bevor Sie auf die Property adProviders von PACConsentInformation zugreifen, müssen Sie warten, bis der Einwilligungsstatus des Nutzers aktualisiert wurde. Weitere Informationen finden Sie im Abschnitt Status der Einwilligung aktualisieren.

Swift

let adProviders = PACConsentInformation.sharedInstance.adProviders

Objective-C

NSArray *adProviders = PACConsentInformation.sharedInstance.adProviders;

Sie können dann die Liste der Anzeigenanbieter verwenden, um die Einwilligung selbst einzuholen.

Nachdem du die Einwilligung erhalten hast, nimm die PACConsentStatus für die Antwort des Nutzers auf und verwende dafür die Property status der Klasse PACConsentInformation.

Swift

PACConsentInformation.sharedInstance.consentStatus = .personalized

Objective-C

PACConsentInformation.sharedInstance.consentStatus = PACConsentStatusPersonalized;

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, setze die Property tagForUnderAgeOfConsent auf YES. Diese Einstellung gilt für alle zukünftigen Anzeigenanfragen.

Swift

PACConsentInformation.sharedInstance.isTaggedForUnderAgeOfConsent = true

Objective-C

PACConsentInformation.sharedInstance.tagForUnderAgeOfConsent = YES;

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.hat das Attribut tagForUnderAgeOfConsent auf NO gesetzt.

Test

Das Consent SDK verhält sich je nach Wert von PACConsentInformation.sharedInstance.requestLocationInEEAOrUnknown 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. Die Werbe-ID Ihres Geräts abrufen Mit dem folgenden Code können Sie Ihre Werbe-ID protokollieren:

    #import <AdSupport/AdSupport.h>
    // ...
    
    NSLog(@"Advertising ID: %@",
          ASIdentifierManager.sharedManager.advertisingIdentifier.UUIDString);

    Sehen Sie sich dann die Konsole an, um sie zu erhalten:

    Advertising ID: 41E538F6-9C98-4EF2-B3EE-D7BD8CAF8339
  2. Legen Sie mithilfe der Werbe-ID in der Konsole Ihr Gerät als Testgerät fest:

    PACConsentInformation.sharedInstance.debugIdentifiers =
        @[ @"41E538F6-9C98-4EF2-B3EE-D7BD8CAF8339" ];
  3. Legen Sie zum Schluss debugGeography Ihre bevorzugte Region für Testzwecke fest.

    // Geography appears as in EEA for debug devices.
    PACConsentInformation.sharedInstance.debugGeography = PACDebugGeographyEEA;
    // Geography appears as not in EEA for debug devices.
    PACConsentInformation.sharedInstance.debugGeography = PACDebugGeographyNotEEA;

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 GADRequest-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:

Swift

let request = GADRequest()
let extras = GADExtras()
extras.additionalParameters = ["npa": "1"]
request.register(extras)

Objective-C

GADRequest *request = [GADRequest request];
GADExtras *extras = [[GADExtras alloc] init];
extras.additionalParameters = @{@"npa": @"1"};
[request registerAdNetworkExtras:extras];

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.

Wenn Sie die App-Messung verzögern möchten, fügen Sie dem Info.plist Ihrer Anwendung den Schlüssel GADDelayAppMeasurementInit mit dem booleschen Wert YES hinzu. Sie können diese Änderung programmatisch vornehmen:

<key>GADDelayAppMeasurementInit</key>
<true/>

Alternativ können Sie ihn auch im Editor für die Unterkunftsliste bearbeiten:

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.