Введение
Этот API предоставляет инструменты для взаимодействия с сообщениями, предлагаемыми на вкладке «Конфиденциальность и обмен сообщениями». С его помощью вы можете:
- suppress messaging for any given user
- query the ad blocking status of a user
- Предоставить пользователю возможность отозвать согласие в соответствии с правилами ЕС.
- переопределить ссылку «Не продавать» по умолчанию в соответствии с правилами штатов США.
- Загружайте теги Google Ads и Google Analytics в зависимости от статуса согласия пользователя в соответствии с законодательством ЕС.
и многое другое.
Вы также можете использовать эти инструменты для получения согласия пользователей с помощью стандартных отраслевых протоколов:
- GDPR consent using the IAB TCF v2 spec
- Отказ от соблюдения требований государственных регулирующих органов США с использованием спецификации IAB GPP
В этих случаях информация о статусе согласия передается через соответствующие API.
Функцию обмена сообщениями с пользователями на вашем сайте можно реализовать несколькими способами:
- В большинстве случаев вам вообще не нужно переименовывать контент — ваш существующий тег Google Publisher Tag или AdSense автоматически отправляет сообщения пользователям после их публикации в соответствующем продукте.
- Если вы используете сообщение о восстановлении после блокировки рекламы, вам необходимо явно добавить тег блокировки рекламы на свою страницу. Дополнительную информацию см. в инструкциях по добавлению тегов в Ad Manager и AdSense .
googlefc — это глобальное пространство имен, которое функция обмена сообщениями с пользователями использует для своего API в Window JavaScript.
Field Summaries
| Имя | Тип | Определение |
|---|---|---|
googlefc.controlledMessagingFunction | function(!Object) | Функция, определяющая, следует ли продолжать отправку сообщений. Эта функциональность поддерживается для всех типов сообщений. |
googlefc.callbackQueue | !Array<!Object<string, function()>> | !Array<function()> | !googlefc.CallbackQueue | Ссылка на очередь обратных вызовов для асинхронного выполнения запросов на обмен сообщениями с пользователями. |
googlefc.CallbackQueue | !Объект | The type of the callback queue object. |
googlefc.AdBlockerStatusEnum | !Object<string, number> | Перечисление, представляющее состояние блокировщика рекламы пользователя. |
googlefc.AllowAdsStatusEnum | !Object<string, number> | An enum to represent the user's allow-ads state. |
googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum | !Object<string, number> | Перечисление, представляющее первоначальный статус отказа пользователя от участия в программе в зависимости от штата США. При этом учитывается штат США, в котором находится пользователь. |
googlefc.GoogleFcConsentModeUserStatus | !Объект | Тип возвращаемого значения для googlefc.getGoogleConsentModeValues . |
googlefc.ConsentModePurposeStatusEnum | !Object<string, number> | Перечисление, представляющее решение конечного пользователя в режиме подтверждения согласия. |
googlefc.usstatesoptout.overrideDnsLink | undefined|boolean | Логическое значение, которое можно установить в true, чтобы использовать собственную пользовательскую ссылку «Не продавать и не передавать». |
googlefc.ccpa.InitialCcpaStatusEnumУстаревшая версия. Предпочтительнее использовать googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum . | !Object<string, number> | Перечисление, представляющее первоначальный статус пользователя в соответствии с правилами штатов США. |
googlefc.ccpa.overrideDnsLinkУстаревшая версия. Предпочитать googlefc.usstatesoptout.overrideDnsLink . | undefined|boolean | Логическое значение, которое можно установить в true, чтобы использовать собственную пользовательскую ссылку «Не продавать и не передавать». |
Method Summaries
| Имя | Тип возвращаемого значения | Определение |
|---|---|---|
googlefc.showRevocationMessage() | неопределенный | Очищает запись о согласии и перезагружает скрипт googlefc , чтобы отобразить сообщение о согласии, применимое к пользователю. |
googlefc.getAdBlockerStatus() | число | Возвращает значение из AdBlockerStatusEnum в зависимости от статуса блокировки рекламы у пользователя. |
googlefc.getAllowAdsStatus() | число | Возвращает значение из AllowAdsStatusEnum в зависимости от статуса разрешения показа рекламы у пользователя. |
googlefc.usstatesoptout.getInitialUsStatesOptOutStatus() | число | Возвращает значение из InitialUsStatesOptOutStatusEnum в зависимости от первоначального статуса отказа пользователя от соблюдения правил штата США. При этом учитывается правило, применимое к пользователю в зависимости от его текущего местоположения. |
googlefc.usstatesoptout.openConfirmationDialog(function(boolean)) | неопределенный | Открывает диалоговое окно подтверждения отказа от участия в соответствии с правилами штата США, если ссылка «Не продавать и не передавать» по умолчанию отключена. |
googlefc.getGoogleConsentModeValues() | !Объект | Возвращает объект googlefc.GoogleFcConsentModeUserStatus , содержащий текущие значения режимов согласия для пользователя, по одному для каждой доступной цели режима согласия. |
googlefc.ccpa.getInitialCcpaStatus()Устаревшая версия. Предпочтительнее использовать googlefc.usstatesoptout.getInitialUsStatesOptOutStatus() . | число | Возвращает значение из InitialCcpaStatusEnum в зависимости от первоначального статуса отказа пользователя от соблюдения правил штата США. |
googlefc.ccpa.openConfirmationDialog(function(boolean))Устаревшая версия. Предпочтительнее использовать googlefc.usstatesoptout.openConfirmationDialog() . | неопределенный | Открывает диалоговое окно подтверждения отказа от участия в соответствии с правилами штата США, если ссылка «Не продавать и не передавать» по умолчанию отключена. |
Testing and debugging on your site
Функция «Конфиденциальность и обмен сообщениями» предоставляет возможности отладки и тестирования, позволяющие увидеть, как выглядят конкретные сообщения, подтипы сообщений или комбинации сообщений на вашем реальном сайте.
Предварительные требования:
- Сообщение (сообщения), которое вы хотите просмотреть, должно быть опубликовано на сайте, который вы тестируете.
Вы можете просмотреть предварительный просмотр в реальном времени на своем сайте, используя следующие параметры URL-адреса для отладки:
| Debug parameter | Допустимые значения |
|---|---|
fc | alwaysshow (to trigger debug/preview mode) |
fctype | ab (сообщения для блокировки рекламы), ccpa (сообщения об отказе от участия в соответствии с законодательством штатов США), gdpr (сообщения о согласии на обработку персональных данных в соответствии с GDPR), monetization (сообщения Offerwall), usfl (сообщения об отказе от участия в соответствии с законодательством штатов США, специфичные для Флориды), usnat (сообщения об отказе от участия в соответствии с законодательством штатов США, все поддерживаемые штаты, кроме Флориды; эквивалентно ccpa ) |
Вот несколько примеров того, как использовать это для предварительного просмотра на вашем сайте (foo.com):
- Проверьте сообщения об отказе от участия в соответствии с законодательством штатов США —
http://foo.com/?fc=alwaysshow&fctype=ccpa - Протестируйте сообщения, соответствующие GDPR —
http://foo.com/?fc=alwaysshow&fctype=gdpr
Fields: explanations and examples
googlefc.controlledMessagingFunction {function(!Object)}
Функция, определяющая, следует ли отображать сообщения. Она может использоваться для управления отображением сообщений в зависимости от условий, заданных издателем, таких как статус подписчика или URL страницы.
Если вы определяете googlefc.controlledMessagingFunction для окна до загрузки других скриптов, сообщения не отображаются до тех пор, пока вы не вызовете message.proceed(boolean) . Вызов message.proceed(true) позволяет продолжить отправку сообщений как обычно, тогда как вызов message.proceed(false) предотвращает отображение любых сообщений для представления страницы.
Пример: предположим, что на странице есть следующий скрипт, определяющий асинхронную функцию determineIfUserIsSubscriber() , которая проверяет, является ли авторизованный пользователь подписчиком.
<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>
Это пример того, как можно использовать googlefc.controlledMessagingFunction для показа сообщения только тем, кто не является подписчиком.
<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>
Существует также расширение этой функции, позволяющее издателям указывать, что следует подавлять только определенные типы сообщений. Используйте это расширение функции, чтобы подавлять определенные типы сообщений, не подавляя при этом другие типы сообщений.
Управление отправкой сообщений в зависимости от типа сообщения достигается путем передачи дополнительного параметра в функцию message.proceed() , Array типа googlefc.MessageTypeEnum .
Пример: Это пример использования googlefc.controlledMessagingFunction для подавления показа Offerwall только для подписчиков, без подавления других типов сообщений:
<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>
Ссылка на глобальную очередь обратных вызовов для асинхронного выполнения вызовов, связанных с обменом сообщениями. Единственный поддерживаемый способ вызова любой функции — добавление её в callbackQueue .
Поскольку данные разных типов становятся доступны в разное время, следует добавить функцию в виде карты, где ключом будет одна из следующих строк, а значением — функция, которая должна быть выполнена.
Supported keys:
| Key name | Использование | Relative latency |
|---|---|---|
CONSENT_API_READY | Функции, добавленные в очередь обратных вызовов с ключом CONSENT_API_READY выполняются после определения и вызова API для поддерживаемых систем согласия. С этого момента выполнение любых функций, добавленных впоследствии с ключом CONSENT_API_READY , осуществляется синхронно. Подробную информацию о конкретных системах см. в разделах, посвященных системам IAB . | Низкий |
CONSENT_DATA_READY | Функции, добавленные в очередь обратных вызовов с ключом CONSENT_DATA_READY выполняются, когда становится известно о согласии пользователя, полученном в рамках поддерживаемой системы согласия (либо из предыдущего выполнения, либо после взаимодействия пользователя с сообщением о согласии). С этого момента выполнение любых последующих функций, добавленных с ключом CONSENT_DATA_READY происходит синхронно. | Высокий |
AD_BLOCK_DATA_READY | Функции, добавленные в очередь обратных вызовов с ключом AD_BLOCK_DATA_READY выполняются, когда данные о блокировке рекламы становятся доступны в потоке. С этого момента выполнение любых последующих функций, добавленных с ключом AD_BLOCK_DATA_READY , происходит синхронно. | Высокий |
CONSENT_MODE_DATA_READY | Функции, добавленные в очередь обратных вызовов с ключом CONSENT_MODE_DATA_READY выполняются, когда данные о режиме согласия Google (для использования с тегами Google Ads и Analytics) становятся доступны в потоке. Как только данные о режиме согласия будут готовы, вы можете в любое время получить доступ к значениям режима согласия, используя googlefc.getGoogleConsentModeValues . | Середина |
INITIAL_US_STATES_OPT_OUT_DATA_READY | Функции, помещенные в очередь обратных вызовов с ключом INITIAL_US_STATES_OPT_OUT_DATA_READY выполняются, когда данные о нормативных актах штатов США становятся доступны в потоке. Обратите внимание, что любой последующий запрос данных о нормативных актах штатов США следует получать путем прямого вызова API GPP ( __gpp ). | Середина |
INITIAL_CCPA_DATA_READY | Устаревший ключ для правил штатов США. Предпочтительный ключ: INITIAL_US_STATES_OPT_OUT_DATA_READY .Функции, помещенные в очередь обратных вызовов с ключом INITIAL_CCPA_DATA_READY выполняются, когда данные о нормативных актах штатов США становятся доступны в потоке. Обратите внимание, что любой последующий запрос данных о нормативных актах штатов США следует получать путем прямого вызова API GPP ( __gpp ). | Середина |
googlefc.CallbackQueue {!Object}
Method summary:
| Имя | Тип | Параметр | Тип возвращаемого значения | Роль |
|---|---|---|---|---|
push(data) | число | data : Пара ключ-значение, где ключ представляет собой один из типов доступности данных, а значение — функцию JavaScript для выполнения. Допустимые ключи доступности данных: CONSENT_API_READY , CONSENT_DATA_READY , AD_BLOCK_DATA_READY , INITIAL_US_STATES_OPT_OUT_DATA_READY , CONSENT_MODE_DATA_READY и (устаревший) INITIAL_CCPA_DATA_READY . | Количество добавленных команд на данный момент. Возвращает текущую длину массива. | Выполняет переданную функцию в порядке поступления данных, а затем в порядке добавления этих функций в очередь. |
Пример:
<script>
// Make sure that the properties exist on the window.
window.googlefc = window.googlefc || {};
window.googlefc.usstatesoptout = window.googlefc.usstatesoptout || {};
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>}
Отображает различные состояния блокировки рекламы пользователем. Различные состояния:
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>}
Отображает различные состояния блокировки рекламы пользователем (разрешенная реклама). Различные состояния:
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.usstatesoptout.InitialUsStatesOptOutStatusEnum{!Object<string, number>}
Отражает различные статусы отказа пользователя от участия в регулировании законодательства штатов США. Различные статусы:
googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum = {
// Something failed, status unknown.
UNKNOWN: 0,
// No US state regulation applies to this user.
DOES_NOT_APPLY: 1,
// A US state regulation applies to this user, and the user has not opted out yet.
NOT_OPTED_OUT: 2,
// A US state regulation applies to this user, and the user has opted out.
OPTED_OUT: 3,
};
googlefc.GoogleFcConsentModeUserStatus{!Object}
Тип объекта, возвращаемого функцией googlefc.getGoogleConsentModeValues .
interface GoogleFcConsentModeUserStatus {
// End user consent decision value for the ad_storage consent mode purpose.
adStoragePurposeConsentStatus: number;
// End user consent decision value for the ad_user_data consent mode purpose.
adUserDataPurposeConsentStatus: number;
// End user consent decision value for the ad_personalization consent mode purpose.
adPersonalizationPurposeConsentStatus: number;
// End user consent decision value for the analytics_storage consent mode purpose.
analyticsStoragePurposeConsentStatus: number;
}
Значение каждого поля представляет собой число, соответствующее значению перечисления googlefc.ConsentModePurposeStatusEnum .
googlefc.ConsentModePurposeStatusEnum{!Object<string, number>}
Представляет различные возможные значения согласия конечного пользователя для режима согласия. Различные значения:
googlefc.ConsentModePurposeStatusEnum = {
// Indicates either an error state, or that consent mode data is not ready
// yet.
UNKNOWN: 0,
// Consent is granted for the given consent mode purpose.
GRANTED: 1,
// Consent is denied for the given consent mode purpose.
DENIED: 2,
// Consent is not applicable for the given consent mode purpose.
NOT_APPLICABLE: 3,
// The consent mode purpose has not been configured for use in the Privacy &
// messaging UI.
NOT_CONFIGURED: 4
};
googlefc.usstatesoptout.overrideDnsLink{undefined|boolean}
Установите для этого поля значение true, чтобы скрыть стандартную ссылку «Не продавать и не передавать» и использовать собственную пользовательскую ссылку «Не продавать и не передавать».
Пример:
<script>
// Make sure that the properties exist on the window.
window.googlefc = window.googlefc || {};
window.googlefc.usstatesoptout = window.googlefc.usstatesoptout || {};
// Signals that the default DNS link will be overridden.
googlefc.usstatesoptout.overrideDnsLink = true;
</script>
googlefc.ccpa.InitialCcpaStatusEnum{!Object<string, number>}
Отражает различные статусы отказа пользователя от участия в регулировании законодательства штатов США. Различные статусы:
googlefc.ccpa.InitialCcpaStatusEnum = {
// Something failed, in an unknown state.
UNKNOWN: 0,
// No US state regulation applies to this user.
CCPA_DOES_NOT_APPLY: 1,
// A US state regulation applies to this user, and the user has not opted out yet.
NOT_OPTED_OUT: 2,
// A US state regulation applies to this user, and the user has opted out.
OPTED_OUT: 3,
};
googlefc.ccpa.overrideDnsLink{undefined|boolean}
Установите для этого поля значение true, чтобы скрыть стандартную ссылку «Не продавать и не делиться» и использовать собственную пользовательскую ссылку «Не продавать и не делиться». Обратите внимание, что если вы установите для этого поля значение true, вы будете нести ответственность за отображение ссылки «Не продавать и не делиться» на вашем сайте. Это поле следует использовать совместно с openConfirmationDialog .
Пример:
<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>
Methods: explanations and examples
googlefc.getConsentStatus(): {number}
googlefc.getConsentedProviderIds(): {!Array<string>}
- Теперь при вызове эта функция всегда возвращает пустой список.
googlefc.showRevocationMessage(): {undefined}
Удаляет запись о согласии, содержащуюся в действующих правилах ЕС, если таковая имеется, и снова отображает сообщение о правилах ЕС, чтобы пользователь мог изменить свое решение о согласии.
Пример 1 : Простой пример настройки ссылки, при нажатии на которую будет отображаться сообщение об отзыве:
<a href="javascript:window.googlefc.showRevocationMessage();">Privacy and cookie settings</a>
<a href="javascript:window.googlefc.showRevocationMessage();" style="display: none;" id="revocation-link">Privacy and cookie settings</a>
<script>
window.googlefc = window.googlefc || {};
window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];
window.googlefc.callbackQueue.push({
'CONSENT_API_READY':
() => {
// Update the revocation link so that it shows on the page.
const revocationLink = document.getElementById('revocation-link');
revocationLink.style.display = 'block';
}
});
</script>
Пример 2 : Если вы хотите, чтобы ссылка была видна только тогда, когда к текущему пользователю применяются правила ЕС, вы можете использовать очередь обратного вызова googlefc с API TCF для условного обновления отображения кнопки в зависимости от значения gdprApplies после его определения. Для этого используйте ключ API CONSENT_API_READY .
<a href="javascript:window.googlefc.showRevocationMessage();" style="display: none;" id="revocation-link">Privacy and cookie settings</a>
<script>
window.googlefc = window.googlefc || {};
window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];
window.googlefc.callbackQueue.push({
'CONSENT_API_READY':
// Specifying "0" for the version parameter will result in the API call
// using the latest version of the TCF spec.
() => __tcfapi('addEventListener', 0, (tcdata, success) => {
const revocationLink = document.getElementById('revocation-link');
if (!success || !tcdata) {
// Something went wrong, don't show the revocation link.
revocationLink.style.display = 'none';
}
else if (tcdata.gdprApplies) {
revocationLink.style.display = 'block';
} else {
// GDPR does not apply so don't show the revocation link.
revocationLink.style.display = 'none';
}
})
});
</script>
googlefc.getAdBlockerStatus(): {number}
Возвращает значение из AdBlockerStatusEnum в зависимости от статуса блокировки рекламы у пользователя. Ключ, который необходимо указать для этой функции, — AD_BLOCK_DATA_READY .
Пример:
<script>
// Make sure that the properties exist on the window.
window.googlefc = window.googlefc || {};
window.googlefc.usstatesoptout = window.googlefc.usstatesoptout || {};
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}
Возвращает значение из AllowAdsStatusEnum в зависимости от статуса разрешения показа рекламы пользователю. Ключ, который необходимо указать для этой функции, — AD_BLOCK_DATA_READY .
Пример:
<script>
// Make sure that the properties exist on the window.
window.googlefc = window.googlefc || {};
window.googlefc.usstatesoptout = window.googlefc.usstatesoptout || {};
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.usstatesoptout.getInitialUsStatesOptOutStatus(): {number}
Возвращает значение из InitialUsStatesOptOutStatusEnum в зависимости от статуса отказа пользователя от соблюдения нормативных актов штатов США. Ключ, который следует указать для этой функции, — INITIAL_US_STATES_OPT_OUT_DATA_READY . Обратите внимание, что любой последующий запрос данных о нормативных актах штатов США следует получать путем прямого вызова API GPP ( __gpp ).
Если вы отключаете ссылку «Не продавать и не передавать», вы можете использовать этот метод, чтобы определить, когда следует размещать ссылку на вашем сайте.
Пример:
<script>
// Make sure that the properties exist on the window.
window.googlefc = window.googlefc || {};
window.googlefc.usstatesoptout = window.googlefc.usstatesoptout || {}
window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];
// Queue the callback on the callbackQueue.
googlefc.callbackQueue.push({
'INITIAL_US_STATES_OPT_OUT_DATA_READY':
() => {
switch (googlefc.usstatesoptout.getInitialUsStatesOptOutStatus()) {
case googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum.DOES_NOT_APPLY:
// Insert handling for cases where no US state regulation applies to
// the user.
break;
case googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum.NOT_OPTED_OUT:
// Insert handling for cases where a US state regulation applies to
// the user, and the user has not opted out.
break;
case googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum.OPTED_OUT:
// Insert handling for cases where a US state regulation applies to the
// user, and the user has opted out.
break;
}
}
});
</script>
googlefc.usstatesoptout.openConfirmationDialog(function(boolean)): {undefined}
Открывает диалоговое окно подтверждения отказа от участия в соответствии с правилами штата США, если ссылка «Не продавать» по умолчанию отключена. После взаимодействия пользователя с диалоговым окном подтверждения вызывается предоставленная функция обратного вызова со значением true если пользователь решил отказаться от участия, и false в противном случае.
Пример:
<script>
// This callback will be called with the user's US state regulation opt-out
// decision.
const usStateRegCompletionCallback = (userOptedOut) => {
// Insert handling for user opt-out status here.
}
// Invoke the US state regulations confirmation dialog when the user clicks the
// link.
document.getElementById("your-custom-do-not-sell-link").addEventListener(
"click", () => googlefc.usstatesoptout.openConfirmationDialog(usStateRegCompletionCallback));
</script>
googlefc.getGoogleConsentModeValues(): {!Object}
Возвращает объект googlefc.GoogleFcConsentModeUserStatus , содержащий текущие значения для каждого режима согласия, основанные на решении пользователя о согласии.
См. раздел «Использование решений Google для управления согласием с поддержкой режима согласия» для ознакомления с правилами ЕС относительно предполагаемого использования.
googlefc.ccpa.getInitialCcpaStatus(): {number}
Возвращает значение из InitialCcpaStatusEnum в зависимости от статуса отказа пользователя от соблюдения законодательства штатов США. Ключ, который следует указать для этой функции, — INITIAL_CCPA_DATA_READY . Обратите внимание, что любой последующий запрос данных о законодательстве штатов США следует получать путем прямого вызова API GPP ( __gpp ).
Пример:
<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 no US state regulation applies to
// the user.
break;
case googlefc.ccpa.InitialCcpaStatusEnum.NOT_OPTED_OUT:
// Insert handling for cases where a US state regulation applies to
// the user, and the user has not opted out.
break;
case googlefc.ccpa.InitialCcpaStatusEnum.OPTED_OUT:
// Insert handling for cases where a US state regulation applies to the
// user, and the user has opted out.
break;
}
}
});
</script>
googlefc.ccpa.openConfirmationDialog(function(boolean)): {undefined}
Открывает диалоговое окно подтверждения отказа от участия в соответствии с правилами штата США, если ссылка «Не продавать» по умолчанию отключена. После того, как пользователь взаимодействует с диалоговым окном подтверждения, вызывается предоставленная функция обратного вызова с значением true если пользователь решает отказаться от участия, и false в противном случае.
Пример:
<script>
// This callback will be called with the user's US state regulation opt-out
// decision.
const usStateRegCompletionCallback = (userOptedOut) => {
// Insert handling for user opt-out status here.
}
// Invoke the US state regulations confirmation dialog when the user clicks the
// link.
document.getElementById("your-custom-ccpa-do-not-sell-link").addEventListener(
"click", () => googlefc.ccpa.openConfirmationDialog(ccpaCompletionCallback));
</script>
Использование решений Google для управления согласием пользователей в сочетании с протоколом IAB TCF v2 для GDPR.
Если вы используете решения Google для управления согласием на обработку персональных данных в соответствии с GDPR в рамках платформы IAB TCF v2, вам следует использовать API IAB TCF v2 .
Вы можете использовать ключ очереди обратных вызовов CONSENT_API_READY чтобы гарантировать, что соответствующие обратные вызовы будут вызываться только тогда, когда на странице определен API IAB TCF v2. Это следует использовать совместно с командой 'addEventListener' API IAB TCF v2.
Пример:
<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>
Вы можете использовать ключ очереди обратных вызовов CONSENT_DATA_READY , чтобы гарантировать, что соответствующие обратные вызовы будут вызываться только тогда, когда согласие пользователя получено и доступно с помощью API IAB TCF v2. Это можно использовать совместно с командой 'addEventListener' — данные, предоставленные при первом вызове вашей предоставленной функции обратного вызова, будут содержать выбранные пользователем параметры согласия (пока к этому пользователю применяется TCF v2). Обратите внимание, что с выпуском TCF v2.2 команда 'getTCData' устарела.
Пример:
<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 для управления согласием с поддержкой режима согласия в соответствии с правилами ЕС.
Решения Google для управления согласием могут интерпретировать выбор согласия ваших пользователей в соответствии с правилами ЕС для режима согласия Google (подробнее см. в Справочном центре ).
Режим согласия может быть реализован как в базовом , так и в расширенном режиме , как описано в документации Google Ads и Analytics . Вам следует проконсультироваться с вашим юридическим отделом относительно того, какой режим согласия следует использовать для соблюдения ваших юридических требований.
Расширенный режим согласия поддерживается по умолчанию; после включения режима согласия в пользовательском интерфейсе «Конфиденциальность и обмен сообщениями» никаких дополнительных действий не требуется.
Для реализации базового режима согласия с использованием решений Google по управлению согласием вы можете использовать ключ очереди обратного вызова CONSENT_MODE_DATA_READY для условной загрузки тегов Google Ads и Analytics после того, как станут доступны данные режима согласия. Данные режима согласия станут доступны после того, как Funding Choices определит, что режим согласия не применяется к данному запросу (например, поскольку к этому запросу не применяются правила ЕС) или после того, как пользователь примет решение о согласии в соответствии с правилами ЕС. Вам следует проконсультироваться с вашим юридическим отделом относительно критериев, которые следует использовать для определения возможности загрузки ваших тегов после того, как станет доступен режим согласия.
Например, чтобы загрузить ваши теги, как только данные в режиме согласия станут доступны, независимо от решения конечного пользователя о согласии:
<script>
// Make sure that the properties exist on the window.
window.googlefc = window.googlefc || {};
window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];
// Helper function to load Google Ads/Analytics tags once consent mode data is
// ready.
const loadGtagScript = () => {
// Load gtag.js script - code taken from
// https://developers.google.com/tag-platform/security/guides/consent?consentmode=basic#set_up_consent_mode
var gtagScript = document.createElement('script');
gtagScript.async = true;
gtagScript.src = 'https://www.googletagmanager.com/gtag/js?id=<Google tag ID>';
var firstScript = document.getElementsByTagName('script')[0];
firstScript.parentNode.insertBefore(gtagScript,firstScript);
}
// Queue the callback using the CONSENT_MODE_DATA_READY key on the callbackQueue.
window.googlefc.callbackQueue.push({
'CONSENT_MODE_DATA_READY':
() => {
loadGtagScript();
},
});
</script>
Также можно использовать API googlefc.getGoogleConsentModeValues() для получения значений отдельных целей режима согласия, если данные о режиме согласия доступны. Этот API возвращает объект GoogleFcConsentModeUserStatus , содержащий одно поле для каждой поддерживаемой цели режима согласия, а значение каждого поля представляет собой значение перечисления, указывающее значение этой цели режима согласия.
Например, вы можете использовать googlefc.getGoogleConsentModeValues() чтобы разблокировать теги Google Ads и Analytics только в одном из следующих случаев:
- конечный пользователь принимает решение о согласии в соответствии с правилами ЕС, которое приводит к предоставлению согласия на все виды действий, или
- Все цели режима согласия неприменимы к текущему запросу (что может произойти, если не применяются правила ЕС или режим согласия не настроен для одной или нескольких целей в разделе «Конфиденциальность и обмен сообщениями»).
<script>
// Make sure that the properties exist on the window.
window.googlefc = window.googlefc || {};
window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];
// Helper function to determine whether Google Ads and Analytics tags can be
// unblocked. Returns true if all consent mode purposes are set to GRANTED,
// NOT_APPLICABLE, or NOT_CONFIGURED.
const shouldUnblockConsentTags = (googleFcConsentModeStatus) => {
const allConsentModeValues = [
googleFcConsentModeStatus.adStoragePurposeConsentStatus,
googleFcConsentModeStatus.adUserDataPurposeConsentStatus,
googleFcConsentModeStatus.adPersonalizationPurposeConsentStatus,
googleFcConsentModeStatus.analyticsStoragePurposeConsentStatus
];
for (const consentModeValue of allConsentModeValues) {
switch (consentModeValue) {
case googlefc.ConsentModePurposeStatusEnum.CONSENT_MODE_PURPOSE_STATUS_UNKNOWN:
// Indicates either an error case or that consent mode data is not
// ready yet. Cannot unblock tags until consent data is ready and valid,
// so return false.
return false;
case googlefc.ConsentModePurposeStatusEnum.CONSENT_MODE_PURPOSE_STATUS_GRANTED:
// Consent is granted for this consent mode purpose.
break;
case googlefc.ConsentModePurposeStatusEnum.CONSENT_MODE_PURPOSE_STATUS_DENIED:
// Consent is denied for this consent mode purpose. Do not unblock tags.
return false;
case googlefc.ConsentModePurposeStatusEnum.CONSENT_MODE_PURPOSE_STATUS_NOT_APPLICABLE:
// Consent mode does not apply for this purpose.
break;
case googlefc.ConsentModePurposeStatusEnum.CONSENT_MODE_PURPOSE_STATUS_NOT_CONFIGURED:
// Consent mode not configured for this purpose.
// If you configured support for Ads purposes but not Analytics purposes in the
// Privacy & messaging UI, the value of `analyticsStoragePurposeConsentStatus` will
// always be set to NOT_CONFIGURED. If you do not enable any Consent Mode support
// in the Privacy & messaging UI, the values of all purposes will always be set to
// NOT_CONFIGURED.
break;
default:
console.log("Unexpected consent mode value encountered");
}
}
// If all prior checks pass, all consent mode values are either GRANTED,
// NOT_APPLICABLE, or NOT_CONFIGURED.
return true;
};
// Helper function to load Google Ads/Analytics tags.
const loadGtagScript = () => {
// Load gtag.js script - code taken from
// https://developers.google.com/tag-platform/security/guides/consent?consentmode=basic#set_up_consent_mode
var gtagScript = document.createElement('script');
gtagScript.async = true;
gtagScript.src = 'https://www.googletagmanager.com/gtag/js?id=<Google tag ID>';
var firstScript = document.getElementsByTagName('script')[0];
firstScript.parentNode.insertBefore(gtagScript,firstScript);
}
googlefc.callbackQueue.push({
CONSENT_MODE_DATA_READY: () => {
if (shouldUnblockConsentTags(googlefc.getGoogleConsentModeValues())) {
loadGtagScript();
}
},
});
</script>
Использование решений Google для управления согласием пользователей в рамках IAB GPP для соблюдения требований законодательства штатов США.
Если вы используете решения Google для управления согласием пользователей, позволяющие предоставлять конечным пользователям сообщения об отказе от участия в соответствии с законодательством штатов США в рамках IAB GPP, вам следует использовать API IAB GPP .
В связи с возможностью отказа от участия, предусмотренной законодательством штатов США, вы можете использовать ключ очереди обратных вызовов CONSENT_API_READY или CONSENT_DATA_READY чтобы гарантировать доступность API IAB GPP и возврат данных о согласии в момент вызова обратных вызовов.
<script>
// Make sure that the properties exist on the window.
window.googlefc = window.googlefc || {};
window.googlefc.usstatesoptout = window.googlefc.usstatesoptout || {};
window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];
// Queue the callback on the callbackQueue.
window.googlefc.callbackQueue.push({
'CONSENT_DATA_READY':
() => __gpp('ping', (data, success) => {
// Do something with consent data value.
})
});
</script>
Использование решений Google для управления согласием пользователей в рамках IAB GPP для соответствия законодательству штатов США с собственной настраиваемой ссылкой «Не продавать и не передавать».
Если вы используете решения Google для управления согласием пользователей, позволяющие предоставлять конечным пользователям сообщения об отказе от участия в соответствии с законодательством штатов США в рамках системы IAB GPP, вы можете добавить собственную пользовательскую ссылку «Не продавать и не передавать», установив флаг googlefc.usstatesoptout.overrideDnsLink в true .
<script>
// Make sure that the properties exist on the window.
window.googlefc = window.googlefc || {};
window.googlefc.usstatesoptout = window.googlefc.usstatesoptout || {};
window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];
// Signals that the default DNS link will be overridden.
window.googlefc.usstatesoptout.overrideDnsLink = true;
// Register the callback for the initial US state regulations data.
window.googlefc.callbackQueue.push({
'INITIAL_US_STATES_OPT_OUT_DATA_READY': () => {
if (googlefc.usstatesoptout.getInitialUsStatesOptOutStatus() ===
googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum.NOT_OPTED_OUT) {
// TODO: Display custom Do Not Sell or Share link here.
}
}
});
</script>
Это гарантирует, что стандартная ссылка «Не продавать и не делиться» не будет отображаться. Затем вам необходимо обработать взаимодействие пользователя с вашей пользовательской ссылкой «Не продавать и не делиться», вызвав диалоговое окно подтверждения отказа от участия в соответствии с законодательством штата США.
Обратите внимание, что при использовании собственной ссылки «Не продавать и не передавать» вы несете ответственность за обеспечение соответствия вашей ссылки законодательству штатов США.
<script>
// This callback will be called when the user makes a US state regulations
// decision.
const usStateRegCompletionCallback = (userOptedOut) => {
if (userOptedOut) {
// TODO: Hide custom Do Not Sell or Share link here.
}
}
// Invoke the US state regulations opt-out confirmation dialog when the user
// clicks the link.
document.getElementById("your-custom-do-not-sell-link").addEventListener(
"click", () => googlefc.usstatesoptout.openConfirmationDialog(usStateRegCompletionCallback));
</script>