Wprowadzenie
Ten interfejs API zapewnia narzędzia do interakcji z wiadomościami oferowanymi na karcie Prywatność i przesyłanie wiadomości. Dzięki niej możesz:
- pomijanie wiadomości w przypadku danego użytkownika,
- wysyłanie zapytań dotyczących stanu blokowania reklam przez użytkownika;
- umożliwianie użytkownikowi odstąpienia od umowy (w odpowiednich przypadkach)
Korzystając ze standardowych standardów branżowych, możesz także uzyskać zgodę użytkownika za pomocą tych narzędzi:
- Zgoda na wykorzystanie danych zgodnie z RODO na podstawie specyfikacji Zasad IAB dotyczących przejrzystości i uzyskiwania zgody na przetwarzanie danych w wersji 2
- Rezygnacja z ustawy CPRA zgodnie ze specyfikacją IAB CPRA
W takich przypadkach informacje o stanie zgody są przekazywane za pomocą tych interfejsów.
Funkcję wysyłania wiadomości przez użytkowników możesz wdrożyć w witrynie na kilka sposobów:
- W większości przypadków nie musisz dodawać ponownie tagów – istniejący tag wydawcy Google lub tag AdSense wdraża wiadomości użytkowników, gdy tylko zostaną one opublikowane w danej usłudze.
- Jeśli używasz wiadomości dla użytkowników blokujących reklamy, musisz wyraźnie dodać do niej tag blokowania reklam. Więcej informacji znajdziesz w instrukcjach tagowania Ad Managera i AdSense.
googlefc
to globalna przestrzeń nazw używana przez interfejs użytkownika do obsługi wiadomości użytkownika w interfejsie API JavaScriptu Window
.
Podsumowanie pól
Nazwa | Typ | Definicja |
---|---|---|
googlefc.controlledMessagingFunction
|
function(!Object) | Funkcja określająca, czy należy wybrać wiadomość. Ta funkcja jest dostępna dla wszystkich typów wiadomości. |
googlefc.callbackQueue
|
!Array<!Object<string,function()>> | !Array<function()> | !googlefc.CallbackQueue, | Odniesienie do kolejki wywołań zwrotnych do asynchronicznego wykonywania zapytań użytkowników. |
googlefc.CallbackQueue
|
!Obiekty | Typ obiektu kolejki wywołania. |
googlefc.AdBlockerStatusEnum
|
!Object<ciąg, liczba> | Wyliczenie reprezentujące stan blokowania użytkownika. |
googlefc.AllowAdsStatusEnum
|
!Object<ciąg, liczba> | Wyliczenie reprezentujące stan zezwolenia użytkownika na wyświetlanie reklam. |
googlefc.ccpa.InitialCcpaStatusEnum
|
!Object<ciąg, liczba> | Wyliczenie reprezentujące początkowy stan CPRA użytkownika |
googlefc.ccpa.overrideDnsLink
|
nieokreślona|wartość logiczna | Wartość logiczna, która może mieć wartość Prawda, aby używać niestandardowego linku Nie zgadzam się sprzedawać. |
Podsumowanie metod
Nazwa | Zwracany typ | Definicja |
---|---|---|
googlefc.showRevocationMessage()
|
nie zdefiniowano |
Czyści rekord zgody i ponownie wczytuje skrypt googlefc , aby wyświetlić wiadomość z prośbą o zgodę na wykorzystanie danych odpowiednią dla użytkownika.
|
googlefc.getAdBlockerStatus()
|
numer |
Zwraca wartość w polu AdBlockerStatusEnum w zależności od stanu blokowania reklamy użytkownika.
|
googlefc.getAllowAdsStatus()
|
numer |
Zwraca wartość w polu AllowAdsStatusEnum w zależności od stanu dopuszczania reklam przez użytkownika.
|
googlefc.ccpa.getInitialCcpaStatus()
|
numer |
Zwraca wartość w polu InitialCcpaStatusEnum w zależności od początkowego stanu CPRA użytkownika.
|
googlefc.ccpa.openConfirmationDialog(function(boolean))
|
nie zdefiniowano | Otwiera okno z prośbą o potwierdzenie CPRA, jeśli domyślny link „Nie sprzedawaj” zostanie zastąpiony |
Testowanie i debugowanie witryny
Strona „Prywatność i wyświetlanie wiadomości” oferuje funkcje debugowania i testowania, które pozwalają zobaczyć, jak konkretne wiadomości wyglądają (lub ich kombinacje) w rzeczywistej witrynie.
Wymagania wstępne:
- Komunikaty, których podgląd chcesz wyświetlić, muszą być opublikowane w witrynie, której dotyczy test.
Podgląd na żywo możesz sprawdzić w swojej witrynie, korzystając z tych parametrów adresu URL debugowania:
Parametr debugowania | Dozwolone wartości |
---|---|
fc |
alwaysshow (aby aktywować tryb debugowania lub 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 zgodne z RODO), monetization (wiadomości typu offerwall) |
Oto kilka przykładów użycia podglądu w witrynie (foo.com):
- Przetestuj wiadomość 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 wiadomości mają być wyświetlane. Można go używać do blokowania renderowania wiadomości w warunkach określonych przez wydawcę, takich jak stan subskrybenta lub adres URL strony.
Jeśli w oknie zdefiniujesz tag googlefc.controlledMessagingFunction
przed załadowaniem innych skryptów, wiadomości nie będą się wyświetlać, dopóki nie wywołasz metody message.proceed(boolean)
. Wywołanie message.proceed(true)
zezwala na przekazywanie wiadomości tak jak zwykle, a wywołanie message.proceed(false)
uniemożliwia wyświetlanie jakichkolwiek wiadomości dla odsłony.
Załóżmy, że masz na stronie ten skrypt definiujący funkcję asynchronicznej 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>
Oto przykład użycia googlefc.controlledMessagingFunction
w celu wyświetlania wiadomości 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>
Wydawcy korzystający z zamkniętej wersji beta typu offerwall mogą określić, że tylko wiadomość typu offerwall powinna być ignorowana, podając dodatkowy parametr
message.proceed()
. Ten parametr typu Array
jest typu googlefc.MessageTypeEnum
. Obecnie obsługiwane jest tylko jedno rozszerzenie (OFFERWALL
), ale w przyszłości możemy dodać więcej typów wiadomości.
Przykład: załóżmy, że masz tę samą funkcję determineIfUserIsSubscriber()
co powyżej. Oto przykład użycia właściwości googlefc.controlledMessagingFunction
do pominięcia wyświetlania wiadomości typu offerwall w przypadku subskrybentów bez pomijania 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>
Odniesienie do globalnej kolejki wywołań służącej do asynchronicznego wykonywania połączeń dotyczących wiadomości. Jedynym obsługiwanym sposobem na wywołanie każdej funkcji jest dodanie jej do callbackQueue
.
Ponieważ różne typy danych są dostępne w różnym czasie, należy dodać funkcję jako mapę z jednym z tych ciągów znaków jako klucza, a funkcję do wykonania jako wartości.
Obsługiwane klucze:
Nazwa klucza | Wykorzystanie | Względne opóźnienie |
---|---|---|
CONSENT_API_READY
|
Funkcje przekazywane do kolejki wywołań zwrotnych z kluczem CONSENT_API_READY są wykonywane po zdefiniowaniu i wywołaniu interfejsów API dla obsługiwanych platform do uzyskiwania zgody użytkownika. Od tego momentu wykonywanie wszelkich później dodanych funkcji CONSENT_API_READY jest synchroniczne. Szczegółowe informacje dotyczące poszczególnych platform znajdziesz poniżej w sekcji platform IAB.
|
Niska |
CONSENT_DATA_READY
|
Funkcje przekazywane do kolejki wywołań zwrotnych z kluczem CONSENT_DATA_READY są wykonywane, gdy zgoda użytkownika na przetwarzanie danych jest zgodna z obsługiwanymi zasadami dotyczącymi zgody użytkownika (z wcześniejszego wykonania lub po interakcji użytkownika z wiadomością z prośbą o zgodę na wykorzystanie danych). Od tego momentu wykonywanie wszelkich później dodanych funkcji CONSENT_DATA_READY jest synchroniczne.
|
Wysoki |
AD_BLOCK_DATA_READY
|
Funkcje przekazywane do kolejki wywołań zwrotnych z kluczem AD_BLOCK_DATA_READY są wykonywane po udostępnieniu danych blokujących reklamy. Od tego momentu wykonywanie wszelkich później dodanych funkcji AD_BLOCK_DATA_READY jest synchroniczne.
|
Wysoki |
INITIAL_CCPA_DATA_READY
|
Funkcje przekazywane do kolejki wywołań zwrotnych z INITIAL_CCPA_DATA_READY są wykonywane, gdy dane CPRA będą dostępne w ramach przepływu. Pamiętaj, że każde późniejsze żądanie danych CPRA powinno być wywoływane bezpośrednio przez interfejs US Privacy API (__uspapi ).
|
Średni |
googlefc.CallbackQueue {!Object}
Podsumowanie metody:
Nazwa | Typ | Parametr | Zwracany typ | Rola |
---|---|---|---|---|
push(data)
|
numer |
data : para klucz-wartość z kluczem jako jednym z typów dostępności danych i wartością jako funkcją JavaScriptu 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 wprowadzonych do tej pory poleceń. Zwraca bieżącą długość tablicy. | Wykonuje przekazaną funkcję w kolejności, w której dane są dostępne, a następnie w kolejności dodawania 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>}
Odzwierciedla różne stany blokowania reklam użytkownika. Są to:
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>}
Odzwierciedla różne stany dopuszczania reklam przez użytkowników blokujących reklamy. Są to:
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>}
Odzwierciedla różne stany dopuszczania reklam przez użytkowników blokujących reklamy. Są to:
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}
Aby ukryć domyślny link Nie zgadzam się na sprzedaż danych osobowych i użyć niestandardowego linku Nie zgadzam się, nie ustawiaj tego pola na wartość Prawda.
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>}
- Po wywołaniu zawsze wyświetla się pusta lista.
googlefc.showRevocationMessage(): {undefined}
Czyści bieżący rekord zgody i pokazuje wiadomość z prośbą o zgodę na wykorzystanie danych użytkownika. Klucz, który powinien być określony dla tej funkcji, to 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 zasadzie AdBlockerStatusEnum w zależności od stanu blokowania użytkownika. Klucz, który powinien być określony dla tej funkcji, to 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
zależnie od stanu dopuszczania reklam przez użytkownika. Klucz, który powinien być określony dla tej funkcji, to 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 CPRA użytkownika. Klucz, który powinien być określony dla tej funkcji, to INITIAL_CCPA_DATA_READY
. Pamiętaj, że każde późniejsze żądanie danych CPRA powinno być wywoływane bezpośrednio przez interfejs 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 z prośbą o potwierdzenie CPRA, jeśli domyślny link „Nie sprzedawaj” zostanie zastąpiony Gdy użytkownik wejdzie w interakcję z oknem potwierdzenia, wywołana przez niego funkcja wywołania zwrotnego zostanie wywołana za pomocą właściwości true
, jeśli użytkownik zdecyduje się zrezygnować z oglądania, lub 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>
Korzystanie z 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.0 (RODO)
Jeśli korzystasz z rozwiązań Google do zarządzania zgodą użytkowników na przetwarzanie danych zgodnie z Zasadami IAB dotyczącymi przejrzystości i uzyskiwania zgody na przetwarzanie danych w wersji 2, musisz używać interfejsu API IAB Zasad dotyczących przejrzystości i uzyskiwania zgody na przetwarzanie danych w wersji 2.
Na stronie CONSENT_API_READY
klucz kolejki wywołań, który daje pewność, że odpowiednie wywołania zwrotne są wywoływane tylko wtedy, gdy na stronie definiuje się interfejs IAB TCF w wersji 2. Należy go używać w połączeniu z poleceniem API IAB dotyczącym przejrzystości i uzyskiwania zgody na przetwarzanie danych w wersji 2.0'addEventListener'
, które jest używane przez polecenie synchronicznej zgody użytkownika 'getTCData'
.
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.0, (data, success) => {
// Do something with consent data value; this callback may be invoked
// multiple times as user completes consent flow.
})
});
</script>
Na stronie CONSENT_DATA_READY
Klucz kolejki wywołań zapewnia, że odpowiednie wywołania zwrotne są wywoływane tylko wtedy, gdy użytkownik wyraził zgodę i uzyskał do niej dostęp za pomocą interfejsu API Zasad IAB dotyczących przejrzystości i uzyskiwania zgody na przetwarzanie danych w wersji 2. Tej opcji można używać w połączeniu z poleceniem 'getTCData'
, ponieważ stan zgody użytkownika możesz pobrać za pomocą metod synchronicznych.
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('getTCData', 2.0, (data, success) => {
// Do something with consent data value.
})
});
</script>
Korzystanie z rozwiązań Google do zarządzania zgodą użytkowników na potrzeby zasad CPRA opracowanych przez IAB
Jeśli korzystasz z rozwiązań Google do zarządzania zgodą użytkowników na potrzeby rezygnacji z CPRA zgodnie z Zasadami IAB GPP, skorzystaj z interfejsu IAB GPP API.
Ze względu na możliwość rezygnacji z ustawy CPRA możesz użyć klucza kolejki wywołania CONSENT_API_READY
lub CONSENT_DATA_READY
, aby zapewnić wywoływanie interfejsu IAB GPP API i zwracanie danych zgody w momencie wywołania zwrotnego.
<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 potrzeby platformy CPRA dla IAB z niestandardowym linkiem do sprzedaży
Jeśli korzystasz z rozwiązań Google do zarządzania zgodą użytkowników na potrzeby wycofania zgody na wykorzystanie danych zgodnie z ustawą CPRA IAB, możesz ustawić niestandardowy link „Nie zgadzam się na sprzedaż moich danych osobowych”, 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 sprzedawaj” nie jest renderowany. Pamiętaj, że Twoim obowiązkiem jest wyrenderowanie własnego linku Nie zgadzam się na sprzedaż danych, aby zachować zgodność z CPRA. Następnie musisz obsługiwać interakcję użytkownika z niestandardowym linkiem Nie zgadzam się na sprzedaż, wywołując okno dialogowe 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>