Datenschutz und Messaging JavaScript API

Einleitung

Diese API bietet Tools für die Interaktion mit Nachrichten, die auf dem Tab „Datenschutz und Mitteilungen“ angeboten werden. Sie können mit ihr:

  • Nachrichten für einen bestimmten Nutzer unterdrücken
  • den Werbeblocker-Status eines Nutzers abfragen
  • Nutzern erlauben, ihre Einwilligung zu widerrufen (falls zutreffend)

Sie können diese Tools auch verwenden, um mithilfe einiger branchenüblicher Protokolle die Nutzereinwilligung einzuholen:

In diesen Fällen wird der Einwilligungsstatus über diese APIs gesendet.

Sie haben mehrere Möglichkeiten, diese Mitteilungen für Nutzer auf Ihrer Website bereitzustellen:

  1. In den meisten Fällen müssen Sie Ihre Tags nicht neu taggen. Über Ihr vorhandenes Google Publisher-Tag oder AdSense-Tag werden Nutzermitteilungen bereitgestellt, sobald die Mitteilung im entsprechenden Produkt veröffentlicht wurde.
  2. Wenn Sie die Mitteilung zum Ausgleich von Werbeumsatz verwenden, müssen Sie das Tag explizit auf Ihrer Seite einfügen. Weitere Informationen finden Sie in den Anleitungen zum Tagging von Ad Manager und AdSense.

googlefc ist der globale Namespace, den die Messaging-Funktion für Nutzer für ihre API im JavaScript-Window verwendet.

Feldzusammenfassungen

Name Typ Definition
googlefc.controlledMessagingFunction Funktion(!Objekt) Eine Funktion, die bestimmt, ob mit einer Messaging-Funktion fortgefahren wird. Diese Funktion wird für alle Mitteilungstypen unterstützt.
googlefc.callbackQueue !Array<!Object<string, function()>> | !Array<Funktion()> | !googlefc.CallbackQueue Verweis auf die Rückrufwarteschlange für die asynchrone Ausführung von Nutzernachrichtenabfragen
googlefc.CallbackQueue !Objekt Der Typ des Callback-Warteschlangenobjekts.
googlefc.AdBlockerStatusEnum !Object<String, Zahl> Eine Aufzählung, die den Werbeblocker-Status des Nutzers darstellt.
googlefc.AllowAdsStatusEnum !Object<String, Zahl> Eine Aufzählung, die den Status der Zulassung von Anzeigen des Nutzers darstellt.
googlefc.ccpa.InitialCcpaStatusEnum !Object<String, Zahl> Eine Aufzählung, die den anfänglichen CPRA-Status des Nutzers darstellt.
googlefc.ccpa.overrideDnsLink undefined|boolean Ein boolescher Wert, der auf „true“ gesetzt werden kann, um einen benutzerdefinierten „Nicht verkaufen“-Link zu verwenden.

Zusammenfassung der Methoden

Name Rückgabetyp Definition
googlefc.showRevocationMessage() nicht definiert Löscht den Einwilligungseintrag und lädt das Skript googlefc neu, um die Mitteilung zur EU-Nutzereinwilligung für den Nutzer anzuzeigen.
googlefc.getAdBlockerStatus() Zahl Gibt einen Wert im AdBlockerStatusEnum zurück, abhängig vom Anzeigenblockierungsstatus des Nutzers.
googlefc.getAllowAdsStatus() Zahl Gibt einen Wert im AllowAdsStatusEnum zurück, abhängig vom Status „Anzeigen zulassen“ des Nutzers.
googlefc.ccpa.getInitialCcpaStatus() Zahl Gibt abhängig vom anfänglichen CPRA-Status des Nutzers einen Wert im InitialCcpaStatusEnum zurück.
googlefc.ccpa.openConfirmationDialog(function(boolean)) nicht definiert Öffnet das CPRA-Bestätigungsdialogfeld, wenn der Standardlink „Nicht verkaufen“ überschrieben wird.

Tests und Fehlerbehebung auf Ihrer Website

„Datenschutz und Mitteilungen“ bietet Debugging- und Testfunktionen, mit denen Sie sehen können, wie bestimmte Mitteilungen (oder Kombinationen von Mitteilungen) auf Ihrer Website aussehen.

Voraussetzungen:

  • Die Nachrichten, die Sie in der Vorschau ansehen möchten, müssen auf der Website veröffentlicht sein, für die Sie testen möchten.

Mit den folgenden Parametern für die Debugging-URL können Sie sich eine Livevorschau auf Ihrer Website ansehen:

Debug-Parameter Zulässige Werte
fc alwaysshow (zum Auslösen des Fehlerbehebungs-/Vorschaumodus)
fctype ab (Mitteilungen zu Werbeblockern), ccpa (CPRA-Widerspruchsmitteilungen), gdpr (DSGVO-konforme Mitteilungen zur Einwilligung der Nutzer in der EU), monetization (Offerwall-Mitteilungen)

Beispiele für die Verwendung dieser Funktion für die Vorschau auf Ihrer Website (foo.com):

  • CPRA-Mitteilung testen – http://foo.com/?fc=alwaysshow&fctype=ccpa
  • DSGVO-Mitteilungen testen – http://foo.com/?fc=alwaysshow&fctype=gdpr

Felder: Erläuterungen und Beispiele

googlefc.controlledMessagingFunction {function(!Object)}

Eine Funktion, die festlegt, ob Nachrichten angezeigt werden. Sie kann verwendet werden, um das Nachrichten-Rendering unter von Publishern angegebenen Bedingungen wie Abonnentenstatus oder Seiten-URL zu sperren.

Wenn Sie googlefc.controlledMessagingFunction im Fenster definieren, bevor andere Skripts geladen werden, werden Nachrichten erst angezeigt, wenn Sie message.proceed(boolean) aufrufen. Wenn message.proceed(true) aufgerufen wird, kann die Nachrichtenfunktion wie gewohnt fortgesetzt werden, während durch das Aufrufen von message.proceed(false) verhindert wird, dass Nachrichten für den Seitenaufruf angezeigt werden.

Beispiel: Angenommen, Sie haben dieses Skript auf der Seite, das die asynchrone Funktion determineIfUserIsSubscriber() definiert, die prüft, ob der angemeldete Nutzer ein Abonnent ist.

<head>
  <script>
    window.isSubscriber = undefined;
    function determineIfUserIsSubscriber() {
      if (isSubscriber !== undefined) {
        return isSubscriber;
      }
      return new Promise(resolve => {
        setTimeout(() => {
          // Change this to true if you want to test what subscribers would see.
          window.isSubscriber = false;
          resolve(window.isSubscriber);
        }, 1000);
      });
    }
  </script>
</head>

Das ist ein Beispiel dafür, wie du die googlefc.controlledMessagingFunction verwenden kannst, um die Nachricht nur Nichtabonnenten anzuzeigen.

<head>
  <script>
    // Define googlefc and the controlled messaging function on the Window.
    window.googlefc = window.googlefc || {};
    googlefc.controlledMessagingFunction = async (message) => {
      // Determine if the user is a subscriber asynchronously.
      const isSubscriber = await determineIfUserIsSubscriber();

      if (isSubscriber) {
        // If the user is a subscriber, don't show any messages.
        message.proceed(false);
      } else {
        // Otherwise, show messages as usual.
        message.proceed(true);
      }
    }
  </script>
</head>

Es gibt auch eine Erweiterung dieser Funktion, mit der Publisher im Teil der geschlossenen Offerwall-Beta angeben können, dass nur die Offerwall unterdrückt werden soll. Andere Nachrichtentypen sind von der Aktivierung dieser Funktion nicht betroffen.

Für Offerwall-spezifische gesteuerte Nachrichten wird ein zusätzlicher Parameter an message.proceed() übergeben, ein Array vom Typ googlefc.MessageTypeEnum.

Beispiel: Hier ist ein Beispiel für die Verwendung von googlefc.controlledMessagingFunction, um die Offerwall-Bereitstellung für Abonnenten nur zu unterdrücken, ohne andere Nachrichtentypen zu unterdrücken:

<head>
  <script>
    // Define googlefc and the controlled messaging function on the Window.
    window.googlefc = window.googlefc || {};
    googlefc.controlledMessagingFunction = async (message) => {
     // Determine if the Offerwall should display or not.
     const shouldDisplayOfferwall = await determineIfUserIsSubscriber();
     const applicableMessageTypes = [];

     if (!shouldDisplayOfferwall) {
       // Do not show the Offerwall, but allow other message types to display.
       applicableMessageTypes.push(window.googlefc.MessageTypeEnum.OFFERWALL);
       message.proceed(false, applicableMessageTypes);
     } else {
       // Otherwise, show messages as usual.
       message.proceed(true);
     }
    }
  </script>
</head>

googlefc.callbackQueue {!Array<!Object<string, function()>> | !Array<function()> | !googlefc.CallbackQueue}

Referenz zur globalen Callback-Warteschlange für die asynchrone Ausführung von nachrichtenbezogenen Aufrufen Die einzige unterstützte Möglichkeit zum Aufrufen einer Funktion besteht darin, sie in callbackQueue einzufügen.

Da verschiedene Datentypen zu unterschiedlichen Zeiten verfügbar werden, sollte eine Funktion als Zuordnung hinzugefügt werden, mit einem der folgenden Strings als Schlüssel und der auszuführenden Funktion als Wert.

Unterstützte Schlüssel:

Schlüsselname Nutzung Relative Latenz
CONSENT_API_READY Funktionen, die mit dem Schlüssel CONSENT_API_READY an die Callback-Warteschlange übertragen werden, werden ausgeführt, wenn die APIs für unterstützte Einwilligungs-Frameworks definiert und aufrufbar sind. Ab diesem Zeitpunkt werden alle nachfolgend hinzugefügten CONSENT_API_READY-bezogenen Funktionen synchron ausgeführt. Framework-spezifische Details finden Sie in den Abschnitten zu IAB-Frameworks. Niedrig
CONSENT_DATA_READY Funktionen, die mit dem Schlüssel CONSENT_DATA_READY an die Callback-Warteschlange übergeben werden, werden ausgeführt, wenn die Nutzereinwilligung bekannt ist, die unter einem unterstützten Framework zur Nutzereinwilligung eingeholt wurde (entweder durch eine vorherige Ausführung oder nachdem der Nutzer mit der Mitteilung zur EU-Nutzereinwilligung interagiert). Ab diesem Zeitpunkt werden alle nachfolgend hinzugefügten CONSENT_DATA_READY-bezogenen Funktionen synchron ausgeführt. Hoch
AD_BLOCK_DATA_READY Funktionen, die mit dem Schlüssel AD_BLOCK_DATA_READY an die Callback-Warteschlange übergeben werden, werden ausgeführt, sobald im Ablauf Daten zu Werbeblockern verfügbar werden. Ab diesem Zeitpunkt werden alle nachfolgend hinzugefügten AD_BLOCK_DATA_READY-bezogenen Funktionen synchron ausgeführt. Hoch
INITIAL_CCPA_DATA_READY Funktionen, die mit der INITIAL_CCPA_DATA_READY an die Callback-Warteschlange übergeben werden, werden ausgeführt, sobald CPRA-Daten im Ablauf verfügbar sind. Alle nachfolgenden Anfragen nach CPRA-Daten müssen durch direktes Aufrufen der US Privacy API (__uspapi) abgerufen werden. Mittel

googlefc.CallbackQueue {!Object}

Methodenzusammenfassung:

Name Typ Parameter Rückgabetyp Rolle
push(data) Zahl data: Ein Schlüssel/Wert-Paar mit dem Schlüssel als einem der Datenverfügbarkeitstypen und dem Wert als auszuführende JavaScript-Funktion. Die zulässigen Datenverfügbarkeitsschlüssel sind CONSENT_API_READY, CONSENT_DATA_READY, AD_BLOCK_DATA_READY und INITIAL_CCPA_DATA_READY. Die Anzahl der bisher hinzugefügten Befehle. Gibt die aktuelle Länge des Arrays zurück. Führt die übergebene Funktion aus, und zwar in der Reihenfolge, in der die Daten verfügbar sind, dann in der Reihenfolge, in der diese Funktionen zur Warteschlange hinzugefügt werden.

Beispiel:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'AD_BLOCK_DATA_READY':
    () => {
      if (googlefc.getAdBlockerStatus() == googlefc.AdBlockerStatusEnum.NO_AD_BLOCKER) {
        // Handle a non-ad blocking user.
      }
    }
  });
</script>

googlefc.AdBlockerStatusEnum {!Object<string, number>}

Stellt die verschiedenen Werbeblocker-Status des Nutzers dar. Die verschiedenen Bundesstaaten sind:

googlefc.AdBlockerStatusEnum = {
  // Something failed, in an unknown state.
  UNKNOWN: 0,
  // The user was running an extension level ad blocker.
  EXTENSION_AD_BLOCKER: 1,
  // The user was running a network level ad blocker.
  NETWORK_LEVEL_AD_BLOCKER: 2,
  // The user was not blocking ads.
  NO_AD_BLOCKER: 3,
};

googlefc.AllowAdsStatusEnum {!Object<string, number>}

Stellt die verschiedenen Status der Nutzer dar, bei denen Anzeigen blockiert werden dürfen. Die verschiedenen Bundesstaaten sind:

googlefc.AllowAdsStatusEnum = {
  // Something failed, in an unknown state.
  UNKNOWN: 0,
  // User is currently using an ad blocker, was never using an ad blocker, or
  // allowed ads, but not because they saw the Privacy & messaging message.
  ADS_NOT_ALLOWED: 1,
  // User is no longer using an ad blocker after seeing the ad blocking message.
  ADS_ALLOWED: 2,
};

googlefc.ccpa.InitialCcpaStatusEnum{!Object<string, number>}

Stellt die verschiedenen Status der Nutzer dar, bei denen Anzeigen blockiert werden dürfen. Die verschiedenen Bundesstaaten sind:

googlefc.ccpa.InitialCcpaStatusEnum = {
  // Something failed, in an unknown state.
  UNKNOWN: 0,
  // CPRA does not apply to this user.
  CCPA_DOES_NOT_APPLY: 1,
  // CPPA applies to this user, and the user has not opted out yet.
  NOT_OPTED_OUT: 2,
  // CPPA applies to this user, and the user has opted out.
  OPTED_OUT: 3,
};

googlefc.ccpa.overrideDnsLink{undefined|boolean}

Setzen Sie dieses Feld auf „true“, um den Standardlink „Nicht verkaufen“ auszublenden und einen benutzerdefinierten „Nicht verkaufen“-Link zu verwenden.

Beispiel:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  // Signals that the default DNS link will be overridden.
  googlefc.ccpa.overrideDnsLink = true;
</script>

Methoden: Erklärungen und Beispiele

googlefc.getConsentStatus(): {number}


googlefc.getConsentedProviderIds(): {!Array<string>}

  1. Bei Aufruf wird jetzt immer eine leere Liste zurückgegeben.

googlefc.showRevocationMessage(): {undefined}

Löscht den aktuellen Einwilligungseintrag und zeigt die Mitteilung zur EU-Nutzereinwilligung an, die für diesen Nutzer gilt. Der Schlüssel, der für diese Funktion angegeben werden muss, ist CONSENT_DATA_READY.

Beispiel:

<button type="button" onclick="googlefc.callbackQueue.push({'CONSENT_DATA_READY': () => googlefc.showRevocationMessage()});">
  Click here to revoke
</button>

googlefc.getAdBlockerStatus(): {number}

Gibt je nach Werbeblocker-Status des Nutzers einen Wert für AdBlockerStatusEnum zurück. Der Schlüssel, der für diese Funktion angegeben werden muss, ist AD_BLOCK_DATA_READY.

Beispiel:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'AD_BLOCK_DATA_READY':
    () => {
      switch (googlefc.getAdBlockerStatus()) {
          case googlefc.AdBlockerStatusEnum.EXTENSION_LEVEL_AD_BLOCKER:
          case googlefc.AdBlockerStatusEnum.NETWORK_LEVEL_AD_BLOCKER:
            // Insert handling for cases where the user is blocking ads.
            break;
          case googlefc.AdBlockerStatusEnum.NO_AD_BLOCKER:
            // Insert handling for cases where the user is not blocking ads.
            break;
          case googlefc.AdBlockerStatusEnum.UNKNOWN:
            // Insert handling for unknown cases.
            break;
      }
    }
  });
</script>

googlefc.getAllowAdsStatus(): {number}

Gibt einen Wert im AllowAdsStatusEnum zurück, abhängig vom Status des Nutzers zum Zulassen von Anzeigen. Der Schlüssel, der für diese Funktion angegeben werden muss, ist AD_BLOCK_DATA_READY.

Beispiel:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'AD_BLOCK_DATA_READY':
    () => {
      switch (googlefc.getAllowAdsStatus()) {
        case googlefc.AllowAdsStatusEnum.ADS_NOT_ALLOWED:
          // Insert handling for cases where the user has not allowed ads.
          // The user may have never been an ad blocker.
          break;
        case googlefc.AllowAdsStatusEnum.ADS_ALLOWED:
          // Insert handling for cases where the user saw the ad blocking
          // message and allowed ads on the site.
          break;
        case googlefc.AllowAdsStatusEnum.UNKNOWN:
          // Insert handling for unknown cases.
          break;
      }
    }
  });
</script>

googlefc.ccpa.getInitialCcpaStatus(): {number}

Gibt je nach CPRA-Status des Nutzers einen Wert im InitialCcpaStatusEnum zurück. Der Schlüssel, der für diese Funktion angegeben werden muss, ist INITIAL_CCPA_DATA_READY. Alle nachfolgenden Anfragen nach CPRA-Daten müssen durch direktes Aufrufen der US Privacy API (__uspapi) abgerufen werden.

Beispiel:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  googlefc.callbackQueue.push({
    'INITIAL_CCPA_DATA_READY':
    () => {
      switch (googlefc.ccpa.getInitialCcpaStatus()) {
        case googlefc.ccpa.InitialCcpaStatusEnum.CCPA_DOES_NOT_APPLY:
          // Insert handling for cases where the user is not CPRA eligible.
          break;
        case googlefc.ccpa.InitialCcpaStatusEnum.NOT_OPTED_OUT:
          // Insert handling for cases where the user is CPRA eligible and has
          // not opted out.
          break;
        case googlefc.ccpa.InitialCcpaStatusEnum.OPTED_OUT:
          // Insert handling for cases where the user is CPRA eligible and has
          // opted out.
          break;
      }
    }
  });
</script>

googlefc.ccpa.openConfirmationDialog(function(boolean)): {undefined}

Öffnet das CPRA-Bestätigungsdialogfeld, wenn der Standardlink „Nicht verkaufen“ überschrieben wird. Sobald der Nutzer mit dem Bestätigungsdialog interagiert, wird die bereitgestellte Callback-Funktion mit true aufgerufen, wenn sich der Nutzer gegen eine Deaktivierung entscheidet, andernfalls mit false.

Beispiel:

<script>
// This callback will be called with the user CPRA decision.
const ccpaCompletionCallback = (userOptedOut) => {
  // Insert handling for user opt-out status here.
}
// Invoke the CPRA confirmation dialog when the user clicks the link.
document.getElementById("your-custom-ccpa-do-not-sell-link").addEventListener(
  "click", () => googlefc.ccpa.openConfirmationDialog(ccpaCompletionCallback));
</script>

Wenn Sie Google-Lösungen zur Einwilligungsverwaltung verwenden, um DSGVO-Einwilligungen im Rahmen des IAB TCF V2-Framework einzuholen, sollten Sie die IAB TCF v2 API verwenden.

Mit dem Callback-Warteschlangenschlüssel CONSENT_API_READY können Sie dafür sorgen, dass entsprechende Callbacks nur dann aufgerufen werden, wenn die IAB TCF 2.0 API auf der Seite definiert ist. Er sollte in Verbindung mit dem Befehl 'addEventListener' der IAB TCF 2.0 API verwendet werden.

Beispiel:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback using the CONSENT_API_READY key on the callbackQueue.
  window.googlefc.callbackQueue.push({
    'CONSENT_API_READY':
    () => __tcfapi('addEventListener', 2.2, (data, success) => {
      // Do something with consent data value; this callback may be invoked
      // multiple times as user completes consent flow.
    })
  });
</script>

Mit dem Callback-Warteschlangenschlüssel CONSENT_DATA_READY können Sie dafür sorgen, dass entsprechende Callbacks nur dann aufgerufen werden, wenn die Nutzereinwilligung eingeholt wurde und über die IAB TCF Version 2 API zugänglich ist. Dies kann in Verbindung mit dem Befehl 'addEventListener' verwendet werden. Die Daten, die im ersten Aufruf des bereitgestellten Callbacks bereitgestellt werden, enthalten die vom Nutzer ausgewählten Einwilligungseinstellungen (sofern TCF v2 für diesen Nutzer gilt). In der Veröffentlichung von Version 2.2 des TCF wurde der Befehl 'getTCData' eingestellt.

Beispiel:

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback using the CONSENT_DATA_READY key on the callbackQueue.
  window.googlefc.callbackQueue.push({
    'CONSENT_DATA_READY':
    () => __tcfapi('addEventListener', 2.2, (data, success) => {
      // Do something with consent data value; this callback may be invoked
      // multiple times if user consent selections change.
    })
  });
</script>

Google-Lösungen zur Einwilligungsverwaltung mit dem IAB GPP-Framework für CPRA verwenden

Wenn Sie Google-Lösungen zur Einwilligungsverwaltung verwenden, um den CPRA-Opt-out im Rahmen des IAB GPP-Frameworks zu erfassen, sollten Sie die IAB GPP API verwenden.

Aufgrund der Widerspruchscharakteristik der CPRA-Vorschrift können Sie entweder den Callback-Warteschlangenschlüssel CONSENT_API_READY oder CONSENT_DATA_READY verwenden, um dafür zu sorgen, dass die IAB GPP API aufgerufen werden kann und Einwilligungsdaten zurückgibt, wenn Callbacks aufgerufen werden.

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Queue the callback on the callbackQueue.
  window.googlefc.callbackQueue.push({
    'CONSENT_DATA_READY':
    () => __uspapi('getUSPData', 1, (data, success) => {
      // Do something with consent data value.
    })
  });
</script>

Google-Lösungen zur Einwilligungsverwaltung mit dem IAB GPP-Framework für CPRA und einem benutzerdefinierten „Nicht verkaufen“-Link verwenden

Wenn Sie Google-Lösungen zur Einwilligungsverwaltung verwenden, um den CPRA-Opt-out im Rahmen des IAB GPP-Framework zu erfassen, können Sie einen benutzerdefinierten „Nicht verkaufen“-Link bereitstellen, indem Sie das Flag googlefc.ccpa.overrideDnsLink auf true setzen.

<script>
  // Make sure that the properties exist on the window.
  window.googlefc = window.googlefc || {};
  window.googlefc.ccpa = window.googlefc.ccpa || {}
  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];

  // Signals that the default DNS link will be overridden.
  window.googlefc.ccpa.overrideDnsLink = true;

  // Register the callback for the initial CPRA data.
  window.googlefc.callbackQueue.push({
      'INITIAL_CCPA_DATA_READY': () => {
        if (googlefc.ccpa.getInitialCcpaStatus() ===
            googlefc.ccpa.InitialCcpaStatusEnum.NOT_OPTED_OUT) {
          // TODO: Display custom CPRA Do Not Sell link here.
        }
      }
    });
</script>

Dadurch wird sichergestellt, dass der standardmäßige Link „Nicht verkaufen“ nicht gerendert wird. Du bist dafür verantwortlich, deinen eigenen „Nicht verkaufen“-Link zu rendern, um die Einhaltung des CPRA zu gewährleisten. Anschließend müssen Sie die Nutzerinteraktion mit Ihrem benutzerdefinierten „Nicht verkaufen“-Link verwalten, indem Sie das CPRA-Bestätigungsdialogfeld aufrufen.

<script>
// This callback will be called with the user CPRA decision.
const ccpaCompletionCallback = (userOptedOut) => {
  if (userOptedOut) {
    // TODO: Hide custom CPRA Do Not Sell link here.
  }
}
// Invoke the CPRA confirmation dialog when the user clicks the link.
document.getElementById("your-custom-ccpa-do-not-sell-link").addEventListener(
  "click", () => googlefc.ccpa.openConfirmationDialog(ccpaCompletionCallback));
</script>