Конфиденциальность и усиление; JavaScript API для обмена сообщениями

Введение

Этот API предоставляет инструменты для взаимодействия с сообщениями на вкладке «Конфиденциальность и сообщения». С его помощью вы можете:

и многое другое.

Вы также можете использовать эти инструменты для сбора согласия пользователей с использованием стандартных отраслевых протоколов:

В этих случаях статус согласия передается посредством этих API.

Вы можете реализовать эту функцию обмена сообщениями с пользователями на своем сайте несколькими способами:

  1. В большинстве случаев вам вообще не нужно повторно тегировать — ваш существующий тег Google Publisher Tag или тег AdSense развертывает пользовательские сообщения после публикации сообщения в соответствующем продукте.
  2. Если вы используете сообщение о восстановлении после блокировки рекламы, вам необходимо добавить тег блокировки рекламы на свою страницу. Подробнее см. в инструкциях по добавлению тегов в Менеджер рекламы и AdSense.

googlefc — это глобальное пространство имен, которое функциональность обмена сообщениями с пользователем использует для своего API в JavaScript Window .

Полевые сводки

Имя Тип Определение
googlefc.controlledMessagingFunction функция(!Объект) Функция, определяющая, следует ли продолжать отправку сообщения. Эта функция поддерживается для всех типов сообщений.
googlefc.callbackQueue !Array<!Object<string, function()>> | !Array<function()> | !googlefc.CallbackQueue Ссылка на очередь обратных вызовов для асинхронного выполнения запросов пользовательских сообщений.
googlefc.CallbackQueue !Объект Тип объекта очереди обратного вызова.
googlefc.AdBlockerStatusEnum !Объект<строка, число> Перечисление, представляющее состояние блокировщика рекламы пользователя.
googlefc.AllowAdsStatusEnum !Объект<строка, число> Перечисление, представляющее состояние разрешения рекламы пользователем.
googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum !Объект<строка, число> Перечисление, представляющее первоначальный статус отказа пользователя от подписки в штатах США. Учитывается штат США, в котором находится пользователь.
googlefc.GoogleFcConsentModeUserStatus !Объект Тип возвращаемого значения для googlefc.getGoogleConsentModeValues .
googlefc.ConsentModePurposeStatusEnum !Объект<строка, число> Перечисление, представляющее решение конечного пользователя для режима согласия.
googlefc.usstatesoptout.overrideDnsLink неопределенный|логический Логическое значение, которое можно установить в значение true, чтобы использовать собственную ссылку «Не продавать» или «Не делиться».
googlefc.ccpa.InitialCcpaStatusEnum

Устаревший. Предпочитает googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum .
!Объект<строка, число> Перечисление, представляющее начальный статус пользователя в соответствии с правилами штата США.
googlefc.ccpa.overrideDnsLink

Устаревший. Предпочитаю googlefc.usstatesoptout.overrideDnsLink .
неопределенный|логический Логическое значение, которое можно установить в значение true, чтобы использовать собственную ссылку «Не продавать» или «Не делиться».

Краткое описание методов

Имя Тип возврата Определение
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() .
неопределенный Открывает диалоговое окно подтверждения отказа от соблюдения правил штата США, если ссылка по умолчанию «Не продавать и не делиться» переопределена.

Тестирование и отладка на вашем сайте

Конфиденциальность и сообщения предоставляют функции отладки и тестирования, которые позволяют вам увидеть, как выглядят конкретные сообщения, подтипы сообщений или комбинации сообщений на вашем реальном сайте.

Предпосылки:

  • Сообщения, которые вы хотите просмотреть, должны быть опубликованы на сайте, который вы тестируете.

Вы можете увидеть предварительный просмотр в реальном времени на своем сайте, используя следующие параметры 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>

Существует также расширение этой функции, позволяющее издателям указать, что следует блокировать только Offerwall. Используйте это расширение, чтобы блокировать Offerwall, не блокируя другие типы сообщений.

Управляемый обмен сообщениями, специфичный для Offerwall, достигается путем передачи дополнительного параметра в 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>

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

Ссылка на глобальную очередь обратных вызовов для асинхронного выполнения вызовов, связанных с обменом сообщениями. Единственный поддерживаемый способ вызова любой функции — добавление её в 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 , выполняются, когда данные [режима согласия] Google (https://support.google.com/google-ads/answer/10000067) (для использования с тегами 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}

Краткое описание метода:

Имя Тип Параметр Тип возврата Роль
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>}

  1. Теперь при вызове всегда возвращается пустой список.

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 по управлению согласием для сбора согласия 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 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, вам следует использовать 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, вы можете предоставить собственную ссылку «Не продавать и не делиться», установив для флага 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>