Privacy & Messaging JavaScript API

Wstęp

Ten interfejs API udostępnia narzędzia do interakcji z wiadomościami dostępnymi na karcie Prywatność i przesyłanie wiadomości. Umożliwia ono:

  • ukrywanie wiadomości dla danego użytkownika
  • zapytanie użytkownika o stan blokowania reklam
  • umożliwić użytkownikowi wycofanie zgody (w odpowiednich przypadkach);

Do uzyskiwania zgody użytkowników możesz też używać protokołów standardowych branżowych, takich jak:

W takich przypadkach informacje o stanie zgody są przekazywane za pomocą tych interfejsów API.

Funkcję wyświetlania wiadomości użytkownikom możesz wdrożyć w swojej witrynie na kilka sposobów:

  1. W większości przypadków nie musisz ponownie dodawać tagów – obecny tag wydawcy Google lub tag AdSense wdraża wiadomości dla użytkowników po opublikowaniu wiadomości w odpowiedniej usłudze.
  2. Jeśli korzystasz z wiadomości dla użytkowników blokujących reklamy, musisz dodać do swojej strony tag do blokowania reklam. Więcej informacji znajdziesz w instrukcjach tagowania w usługach Ad Manager i AdSense.

googlefc to globalna przestrzeń nazw, której funkcja wiadomości użytkowników używa na potrzeby swojego interfejsu API w kodzie Window w języku JavaScript.

Podsumowanie

Nazwa Typ Definicja
googlefc.controlledMessagingFunction function(!Object) Funkcja, która określa, czy należy kontynuować przesyłanie wiadomości. Ta funkcja jest obsługiwana w przypadku wszystkich typów wiadomości.
googlefc.callbackQueue !Track<!Object<string, function()>> | !Array<function()> | !googlefc.CallbackQueue Odniesienie do kolejki wywołań zwrotnych do asynchronicznego wykonywania zapytań dotyczących wiadomości użytkowników.
googlefc.CallbackQueue !Object Typ obiektu kolejki wywołań zwrotnych.
googlefc.AdBlockerStatusEnum !Object<ciąg, liczba> Wyliczenie reprezentujące stan blokady reklam użytkownika.
googlefc.AllowAdsStatusEnum !Object<ciąg, liczba> Wyliczenie reprezentujące stan zezwolenia użytkownika na reklamy.
googlefc.ccpa.InitialCcpaStatusEnum !Object<ciąg, liczba> Wyliczenie reprezentujące początkowy stan użytkownika zgodnie z CPRA.
googlefc.ccpa.overrideDnsLink undefined|boolean Wartość logiczna, która może zostać ustawiona na „true”, aby korzystać z niestandardowego linku do sprzedaży detalicznej.

Podsumowania metod

Nazwa Typ zwracanej wartości Definicja
googlefc.showRevocationMessage() nie zdefiniowano Czyści rekord zgody i ponownie wczytuje skrypt googlefc, aby wyświetlać użytkownikowi wiadomość z prośbą o zgodę na wykorzystanie danych.
googlefc.getAdBlockerStatus() Liczba Zwraca wartość w polu AdBlockerStatusEnum w zależności od stanu blokowania reklam użytkownika.
googlefc.getAllowAdsStatus() Liczba Zwraca wartość w polu AllowAdsStatusEnum w zależności od stanu zgody użytkownika na wyświetlanie reklam.
googlefc.ccpa.getInitialCcpaStatus() Liczba Zwraca wartość w polu InitialCcpaStatusEnum w zależności od początkowego stanu użytkownika zgodnie z CPRA.
googlefc.ccpa.openConfirmationDialog(function(boolean)) nie zdefiniowano Otwiera okno potwierdzenia CPRA, jeśli domyślny link „Nie zgadzam się na sprzedaż” został zastąpiony.

Testowanie i debugowanie w witrynie

Narzędzie „Prywatność i wyświetlanie wiadomości” udostępnia funkcje debugowania i testowania, dzięki którym możesz sprawdzić, jak określone wiadomości (lub ich kombinacje) wyglądają w rzeczywistej witrynie.

Wymagania wstępne:

  • Wiadomości, których podgląd chcesz wyświetlić, muszą być opublikowane w witrynie, którą testujesz

Aby wyświetlić podgląd na żywo w swojej witrynie, użyj tych parametrów adresu URL do debugowania:

Parametr debugowania Dozwolone wartości
fc alwaysshow (aby aktywować tryb debugowania/podglądu)
fctype ab (Wiadomości dotyczące blokowania reklam), ccpa (wiadomości umożliwiające wycofanie zgody na wykorzystanie danych zgodnie z ustawą CPRA), gdpr (wiadomości z prośbą o zgodę na wykorzystanie danych zgodnie z RODO), monetization (wiadomości typu Offerwall)

Oto kilka przykładów użycia tej funkcji do wyświetlania podglądu w witrynie (foo.com):

  • Testowe wiadomości zgodne z CPRA – http://foo.com/?fc=alwaysshow&fctype=ccpa
  • Testowanie wiadomości zgodnej z RODO – http://foo.com/?fc=alwaysshow&fctype=gdpr

Pola: wyjaśnienia i przykłady

googlefc.controlledMessagingFunction {function(!Object)}

Funkcja określająca, czy wyświetlane są komunikaty. Można go używać do blokowania renderowania wiadomości w warunkach określonych przez wydawcę, takich jak stan subskrybenta czy adres URL strony.

Jeśli określisz googlefc.controlledMessagingFunction w oknie przed wczytaniem innych skryptów, komunikaty nie będą się wyświetlać, dopóki nie wywołasz funkcji message.proceed(boolean). Wywołanie message.proceed(true) umożliwia obsługę wiadomości w zwykły sposób, natomiast wywołanie message.proceed(false) uniemożliwia wyświetlanie jakichkolwiek wiadomości związanych z odsłoną.

Przykład: załóżmy, że na stronie masz ten skrypt, który definiuje funkcję asynchroniczną determineIfUserIsSubscriber(), która sprawdza, czy zalogowany użytkownik jest subskrybentem.

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

Ten przykład pokazuje, jak użyć komponentu googlefc.controlledMessagingFunction, aby wyświetlać wiadomość tylko osobom bez subskrypcji.

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

Dostępne jest też rozszerzenie tej funkcji, dzięki któremu wydawcy, którzy biorą udział w zamkniętej wersji beta wiadomości typu Offerwall, mogą określać, że pomijać wiadomości typu Offerwall. Działanie tej funkcji nie ma wpływu na inne typy wiadomości.

Kontrolowane przesyłanie wiadomości na potrzeby wiadomości typu Offerwall jest możliwe przez przekazanie do message.proceed() dodatkowego parametru Array typu googlefc.MessageTypeEnum.

Przykład: użycie pola googlefc.controlledMessagingFunction tylko do wstrzymania wyświetlania wiadomości typu Offerwall w przypadku subskrybentów bez blokowania innych typów wiadomości:

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

Odniesienie do globalnej kolejki wywołań zwrotnych do asynchronicznego wykonywania wywołań związanych z przesyłaniem wiadomości. Jedynym obsługiwanym sposobem wywoływania funkcji jest dodanie jej do funkcji callbackQueue.

W różnych momentach pojawiają się różne typy danych, dlatego należy dodać funkcję jako mapę, używając jednego z tych ciągów jako klucza, a funkcji do wykonania jako wartości.

Obsługiwane klucze:

Nazwa klucza Wykorzystanie Względny czas oczekiwania
CONSENT_API_READY Funkcje przekazywane do kolejki wywołań zwrotnych za pomocą klucza CONSENT_API_READY są wykonywane, gdy interfejsy API obsługiwane przez obsługiwane platformy do uzyskiwania zgody użytkowników są zdefiniowane i możliwe do wywołania. Od tego momentu wykonywanie wszystkich dodanych później funkcji z kluczem CONSENT_API_READY będzie synchroniczne. Szczegółowe informacje na ten temat znajdziesz w sekcjach o zasadach IAB. Niska
CONSENT_DATA_READY Funkcje przekazywane do kolejki wywołań zwrotnych za pomocą klucza CONSENT_DATA_READY są wykonywane, gdy znana jest zgoda użytkownika uzyskana w ramach obsługiwanych zasad dotyczących uzyskiwania zgody (na podstawie wcześniejszego wykonania lub po interakcji użytkownika z wiadomością z prośbą o zgodę na wykorzystanie danych). Od tego momentu wykonywanie wszystkich dodanych później funkcji z kluczem CONSENT_DATA_READY będzie synchroniczne. Wysoka
AD_BLOCK_DATA_READY Funkcje przekazywane do kolejki wywołań zwrotnych za pomocą klucza AD_BLOCK_DATA_READY są wykonywane, gdy w procesie stają się dostępne dane dotyczące blokowania reklam. Od tego momentu wykonywanie wszystkich dodanych później funkcji z kluczem AD_BLOCK_DATA_READY będzie synchroniczne. Wysoka
INITIAL_CCPA_DATA_READY Funkcje przekazane do kolejki wywołań zwrotnych z INITIAL_CCPA_DATA_READY są wykonywane, gdy dane CPRA staną się dostępne w procesie. Pamiętaj, że kolejne żądania danych zgodnej z CPRA należy uzyskiwać przez bezpośrednie wywołanie interfejsu US Privacy API (__uspapi). Średnia

googlefc.CallbackQueue {!Object}

Podsumowanie metody:

Nazwa Typ Parametr Typ zwracanej wartości Rola
push(data) Liczba data: para klucz-wartość, gdzie klucz to jeden z typów dostępności danych, a wartość jako funkcja JavaScript do wykonania. Akceptowane klucze dostępności danych to CONSENT_API_READY, CONSENT_DATA_READY, AD_BLOCK_DATA_READY i INITIAL_CCPA_DATA_READY. Liczba dodanych do tej pory poleceń. Zwraca aktualną długość tablicy. Wykonuje przekazaną funkcję w kolejności, w której dane stają się dostępne, a następnie według kolejności dodania tych funkcji do kolejki.

Przykład:

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

Reprezentuje różne stany blokowania reklam użytkownika. Oto możliwe stany:

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

Reprezentuje różne stany zezwalania na reklamy w przypadku użytkownika. Dostępne stany:

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

Reprezentuje różne stany zezwalania na reklamy w przypadku użytkownika. Dostępne stany:

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}

Ustaw wartość „true” (prawda), by ukryć domyślny link „Nie zgadzam się na sprzedaż” i użyć niestandardowego linku „Nie zgadzam się na sprzedaż”.

Przykład:

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

Metody: wyjaśnienia i przykłady

googlefc.getConsentStatus(): {number}


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

  1. To ustawienie zwraca teraz zawsze pustą listę po wywołaniu.

googlefc.showRevocationMessage(): {undefined}

Czyści aktualny rekord zgody i wyświetla wiadomość z prośbą o zgodę na wykorzystanie danych, która dotyczy tego użytkownika. Kluczem, który należy określić dla tej funkcji, jest CONSENT_DATA_READY.

Przykład:

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

googlefc.getAdBlockerStatus(): {number}

Zwraca wartość w kolumnie AdBlockerStatusEnum w zależności od stanu blokowania reklam użytkownika. Kluczem, który należy określić dla tej funkcji, jest AD_BLOCK_DATA_READY.

Przykład:

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

Zwraca wartość w polu AllowAdsStatusEnum w zależności od stanu zezwolenia na reklamy użytkownika. Kluczem, który należy określić dla tej funkcji, jest AD_BLOCK_DATA_READY.

Przykład:

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

Zwraca wartość w polu InitialCcpaStatusEnum w zależności od stanu użytkownika zgodnie z CPRA. Kluczem, który należy określić dla tej funkcji, jest INITIAL_CCPA_DATA_READY. Pamiętaj, że kolejne żądania danych zgodnej z CPRA należy uzyskiwać przez bezpośrednie wywołanie interfejsu US Privacy API (__uspapi).

Przykład:

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

Otwiera okno potwierdzenia CPRA, jeśli domyślny link „Nie zgadzam się na sprzedaż” został zastąpiony. Gdy użytkownik wejdzie w interakcję z oknem potwierdzenia, podana funkcja wywołania zwrotnego jest wywoływana z funkcją true, jeśli użytkownik zdecyduje się zrezygnować, lub funkcji false w innym przypadku.

Przykład:

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

Jeśli do uzyskiwania zgody użytkowników na potrzeby RODO używasz rozwiązań Google do zarządzania zgodą użytkowników w ramach Zasad IAB dotyczących przejrzystości i uzyskiwania zgody na przetwarzanie danych w wersji 2, musisz używać interfejsu API Zasad IAB dotyczących przejrzystości i uzyskiwania zgody na przetwarzanie danych w wersji 2.

Możesz użyć klucza kolejki wywołań zwrotnych CONSENT_API_READY, aby mieć pewność, że odpowiednie wywołania zwrotne będą wywoływane tylko wtedy, gdy na stronie jest zdefiniowany interfejs API Zasad IAB dotyczących przejrzystości i uzyskiwania zgody na przetwarzanie danych w wersji 2. Tej opcji należy używać w połączeniu z poleceniem 'addEventListener' w interfejsie API Zasad IAB dotyczących przejrzystości i uzyskiwania zgody na przetwarzanie danych w wersji 2.

Przykład:

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

Możesz użyć klucza kolejki wywołań zwrotnych CONSENT_DATA_READY , aby mieć pewność, że odpowiednie wywołania zwrotne będą wywoływane tylko po uzyskaniu zgody użytkownika i udostępnieniu go za pomocą interfejsu API Zasad IAB dotyczących przejrzystości i uzyskiwania zgody na przetwarzanie danych w wersji 2. Tego atrybutu można używać w połączeniu z poleceniem 'addEventListener' – dane podane przy pierwszym wywołaniu podanego wywołania zwrotnego będą zawierać wybory użytkownika dotyczące zgody na przetwarzanie danych (o ile dotyczą go zasady TCF w wersji 2). Pamiętaj, że w wersji 2.2 Zasad dotyczących przejrzystości i uzyskiwania zgody na przetwarzanie danych polecenie 'getTCData' zostało wycofane.

Przykład:

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

Korzystanie z rozwiązań Google do zarządzania zgodą użytkowników w połączeniu z zasadami IAB GPP dla ustawy CPRA

Jeśli używasz rozwiązań Google do zarządzania zgodą użytkowników do uzyskiwania zgody użytkowników na wykorzystanie danych zgodnie z CPRA w ramach zasad IAB GPP, musisz użyć interfejsu IAB GPP API.

Ze względu na charakter zapisów CPRA, które pozwalają na rezygnację z otrzymywania danych, możesz użyć klucza kolejki wywołań zwrotnych CONSENT_API_READY lub CONSENT_DATA_READY, aby mieć pewność, że interfejs IAB GPP API może być wywoływany i zwraca dane dotyczące zgody w momencie wywoływania wywołań zwrotnych.

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

Korzystanie z rozwiązań Google do zarządzania zgodą użytkowników na podstawie Zasad IAB GPP na potrzeby ustawy CPRA z niestandardowym linkiem Do Not Sell

Jeśli używasz rozwiązań Google do zarządzania zgodą użytkowników do uzyskiwania informacji o wycofaniu zgody na wykorzystanie danych zgodnie z CPRA w ramach zasad IAB GPP, możesz udostępnić niestandardowy link do treści nieudostępnianych do sprzedaży, ustawiając flagę googlefc.ccpa.overrideDnsLink na true.

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

Dzięki temu domyślny link „Nie zgadzam się na sprzedaż moich danych osobowych” nie będzie się wyświetlał. Pamiętaj, że aby zachować zgodność z ustawą CPRA, odpowiadasz za renderowanie własnego linku „Nie zgadzam się na sprzedaż danych osobowych”. Następnie należy wywołać interakcję użytkownika z niestandardowym linkiem „Nie zgadzam się na sprzedaż”, wywołując okno potwierdzenia CPRA.

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