Введение
Этот API предоставляет инструменты для взаимодействия с сообщениями, доступными на вкладке "Конфиденциальность и сообщения". С его помощью вы можете:
- блокировать показ сообщений тем или иным пользователям
- определить, работает ли у пользователя блокировщик рекламы;
- создать точку входа, позволяющую пользователю отозвать согласие, полученное в соответствии с европейскими регламентами;
- переопределить ссылку "Не продавать мою личную информацию" по умолчанию для законов штатов США
- условно загружать теги Google Рекламы и Аналитики в зависимости от статуса режима согласия пользователя в соответствии с регламентом ЕС.
И это не всё!
Вы также можете использовать эти инструменты, чтобы запрашивать согласие пользователей с помощью стандартных отраслевых протоколов:
- Согласие по GDPR, полученное с помощью спецификации IAB TCF версии 2.
- Отказы по законам штатов США, использующие спецификацию IAB GPP
В таких случаях статус согласия передается через эти API.
Добавить на сайт сообщения для пользователей можно двумя способами:
- В большинстве случаев вам не нужно заново добавлять теги. Существующие теги Google Publisher Tag или теги AdSense будут показывать сообщения пользователям, как только вы опубликуете их в соответствующем продукте.
- Если вы используете сообщение с просьбой не блокировать рекламу, вам нужно добавить на страницу тег блокировки рекламы. Дополнительную информацию вы найдете в инструкциях по добавлению тегов в Менеджере рекламы и AdSense.
googlefc – это глобальное пространство имен, которое функция сообщений для пользователей использует для своего API в JavaScript Window.
Сводки полей
| Название | Тип | Определение |
|---|---|---|
googlefc.controlledMessagingFunction
|
function(!Object) | Функция, которая определяет, нужно ли продолжать отправку сообщений. Эта функция поддерживается для всех типов сообщений. |
googlefc.callbackQueue
|
!Array<!Object<string, function()>> | !Array<function()> | !googlefc.CallbackQueue | Ссылка на очередь обратных вызовов для асинхронного выполнения запросов сообщений пользователей. |
googlefc.CallbackQueue
|
!Object | Тип объекта очереди обратного вызова. |
googlefc.AdBlockerStatusEnum
|
!Object<string, number> | Перечисление, представляющее состояние блокировщика рекламы пользователя. |
googlefc.AllowAdsStatusEnum
|
!Object<string, number> | Перечисление, представляющее статус разрешения на показ рекламы. |
googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum
|
!Object<string, number> | Перечисление, представляющее первоначальный статус отказа пользователя по законам штатов США. При этом учитывается штат США, в котором находится пользователь. |
googlefc.GoogleFcConsentModeUserStatus
|
!Object |
Тип возвращаемого значения для googlefc.getGoogleConsentModeValues.
|
googlefc.ConsentModePurposeStatusEnum
|
!Object<string, number> | Перечисление, представляющее решение конечного пользователя в отношении цели режима согласия. |
googlefc.usstatesoptout.overrideDnsLink
|
undefined|boolean | Логическое значение, которое можно установить как true, чтобы использовать собственную ссылку "Не продавать и не передавать мои личные данные". |
googlefc.ccpa.InitialCcpaStatusEnum
Legacy. Предпочитаю googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum.
|
!Object<string, number> | Перечисление, представляющее исходный статус пользователя в отношении законов штатов США. |
googlefc.ccpa.overrideDnsLink
Legacy. Предпочитаю googlefc.usstatesoptout.overrideDnsLink.
|
undefined|boolean | Логическое значение, которое можно установить как true, чтобы использовать собственную ссылку "Не продавать и не передавать мои личные данные". |
Обзор методов
| Название | Тип возвращаемого значения | Определение |
|---|---|---|
googlefc.showRevocationMessage()
|
Не определено |
Удаляет запись о согласии и перезагружает скрипт googlefc, чтобы показать пользователю подходящий запрос согласия.
|
googlefc.getAdBlockerStatus()
|
число |
Возвращает значение в AdBlockerStatusEnum в зависимости от того, включен ли у пользователя блокировщик рекламы.
|
googlefc.getAllowAdsStatus()
|
число |
Возвращает значение в AllowAdsStatusEnum в зависимости от статуса разрешения на показ рекламы.
|
googlefc.usstatesoptout.getInitialUsStatesOptOutStatus()
|
число |
Возвращает значение в InitialUsStatesOptOutStatusEnum в зависимости от первоначального статуса отказа пользователя в соответствии с законами штатов США. При этом учитываются правила, действующие в регионе, где находится пользователь.
|
googlefc.usstatesoptout.openConfirmationDialog(function(boolean))
|
Не определено | Открывает диалоговое окно подтверждения отказа от продажи или передачи личных данных, если ссылка "Запретить продажу и передачу личных данных" по умолчанию переопределена. |
googlefc.getGoogleConsentModeValues()
|
!Object |
Возвращает объект googlefc.GoogleFcConsentModeUserStatus, содержащий текущие значения режима согласия для пользователя, по одному для каждой доступной цели режима согласия.
|
googlefc.ccpa.getInitialCcpaStatus()
Legacy. Предпочитаю googlefc.usstatesoptout.getInitialUsStatesOptOutStatus().
|
число |
Возвращает значение в InitialCcpaStatusEnum в зависимости от того, отказался ли пользователь от персонализации рекламы в соответствии с законами штатов США.
|
googlefc.ccpa.openConfirmationDialog(function(boolean))
Legacy. Предпочитаю googlefc.usstatesoptout.openConfirmationDialog().
|
Не определено | Открывает диалоговое окно подтверждения отказа от продажи или передачи личных данных, если ссылка "Запретить продажу и передачу личных данных" по умолчанию переопределена. |
Тестирование и отладка на сайте
В инструменте "Конфиденциальность и сообщения" есть функции отладки и тестирования, которые позволяют посмотреть, как определенные сообщения, их подтипы или комбинации выглядят на вашем сайте.
Требования
- Сообщения, которые вы хотите посмотреть, должны быть опубликованы на сайте, который вы тестируете.
Чтобы посмотреть, как будет выглядеть реклама на вашем сайте, используйте следующие параметры URL для отладки:
| Параметр отладки | Допустимые значения |
|---|---|
fc |
alwaysshow (для запуска режима отладки/предварительного просмотра) |
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
Поля: объяснения и примеры
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.
Поскольку разные типы данных становятся доступны в разное время, функцию следует добавить в виде карты, где в качестве ключа используется одна из следующих строк, а в качестве значения – выполняемая функция.
Поддерживаемые ключи:
| Название ключа | Использование | Относительная задержка |
|---|---|---|
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, выполняются, когда в потоке становятся доступны данные [режима согласия](https://support.google.com/google-ads/answer/10000067) Google (для использования с тегами Google Рекламы и Аналитики). Когда данные режима согласия будут готовы, вы сможете в любое время получить доступ к значениям режима согласия с помощью googlefc.getGoogleConsentModeValues.
|
Средний |
INITIAL_US_STATES_OPT_OUT_DATA_READY
|
Функции, отправленные в очередь обратного вызова с ключом INITIAL_US_STATES_OPT_OUT_DATA_READY, выполняются, когда в потоке становятся доступны данные о законах штатов США. Обратите внимание, что все последующие запросы данных, связанных с законами штатов США, должны выполняться путем прямого вызова GPP API (__gpp).
|
Средний |
INITIAL_CCPA_DATA_READY
|
Устаревший ключ для законов штатов США. Предпочитаю INITIAL_US_STATES_OPT_OUT_DATA_READY. Функции, отправленные в очередь обратного вызова с ключом INITIAL_CCPA_DATA_READY, выполняются, когда в потоке становятся доступны данные, обеспечивающие соблюдение законов штатов США. Обратите внимание, что все последующие запросы данных, связанных с законами штатов США, должны выполняться путем прямого вызова GPP API (__gpp).
|
Средний |
googlefc.CallbackQueue {!Object}
Обзор методов
| Название | Тип | Параметр | Тип возвращаемого значения | Роль |
|---|---|---|---|---|
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>
Методы: объяснения и примеры
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 с TCF API, чтобы условно обновлять отображение кнопки на основе значения 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. Обратите внимание, что все последующие запросы данных, связанных с законами штатов США, должны выполняться путем прямого вызова GPP API (__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. Обратите внимание, что все последующие запросы данных, связанных с законами штатов США, должны выполняться путем прямого вызова GPP API (__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 версии 2.0 в соответствии с регламентом GDPR
Если вы используете решения Google для управления запросами согласия, чтобы собирать согласие по GDPR в соответствии со спецификацией IAB TCF версии 2, вам следует использовать IAB TCF v2 API.
Чтобы обратные вызовы выполнялись только тогда, когда на странице определен API IAB TCF версии 2.0, используйте ключ очереди обратных вызовов CONSENT_API_READY. Его следует использовать вместе с командой 'addEventListener' из API спецификации TCF версии 2.0 от IAB.
Пример:
<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 спецификации TCF версии 2.0 от IAB.
Ее можно использовать в сочетании с командой 'addEventListener'. Данные, предоставленные при первом вызове указанного вами обратного вызова, будут содержать выбранные пользователем варианты согласия (если к этому пользователю применяется TCF версии 2). Обратите внимание, что с выпуском TCF версии 2.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 Рекламе и Аналитике. Проконсультируйтесь с юридическим отделом, чтобы выбрать режим согласия, соответствующий юридическим требованиям.
Расширенный режим согласия поддерживается по умолчанию. После того как вы включите режим согласия в интерфейсе инструмента "Конфиденциальность и сообщения", никаких дополнительных действий не потребуется.
Чтобы реализовать базовый режим согласия с помощью решений Google для управления запросами согласия, вы можете использовать ключ очереди обратного вызова CONSENT_MODE_DATA_READY для условной загрузки тегов Google Рекламы и Аналитики, когда станут доступны данные режима согласия.
Данные режима согласия будут доступны после того, как Детектор блокировки рекламы определит, что режим согласия не применяется к этому запросу (например, потому что к нему не применяются европейские регламенты), или после того, как пользователь примет решение о согласии в соответствии с европейскими регламентами. Проконсультируйтесь с юридическим отделом, чтобы определить, можно ли загружать теги, когда режим согласия доступен.
Например, чтобы загружать теги, когда доступны данные режима согласия, независимо от решения конечного пользователя:
<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 Рекламы и Аналитики, только если:
- конечный пользователь принимает решение о согласии по регламентам ЕС, в результате которого предоставляется согласие для всех целей режима согласия; или
- все цели режима согласия неприменимы к текущему запросу (это может произойти, если регламенты ЕС не применяются или режим согласия не настроен для одной или нескольких целей в разделе "Конфиденциальность и сообщения").
<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, вам следует использовать IAB GPP API.
Поскольку законы штатов США предусматривают возможность отказа, вы можете использовать ключ очереди обратных вызовов CONSENT_API_READY или CONSENT_DATA_READY, чтобы обеспечить возможность вызова IAB GPP API и возврата данных о согласии в момент выполнения обратных вызовов.
<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>