API de JavaScript de privacidad y mensajería

Introducción

Esta API proporciona herramientas para interactuar con los mensajes que ofrece la pestaña Privacidad y mensajería. Con él, puedes realizar las siguientes tareas:

y más.

También puedes usar estas herramientas para obtener el consentimiento del usuario con protocolos estándares de la industria:

En estos casos, el estado del consentimiento se comunica a través de esas APIs.

Puedes implementar esta funcionalidad de mensajería para los usuarios en tu sitio de varias maneras:

  1. En la mayoría de los casos, no es necesario volver a etiquetar tu sitio. Tu Google Publisher Tag o etiqueta de AdSense existente implementa mensajes para los usuarios una vez que se publica el mensaje en el producto correspondiente.
  2. Si usas el mensaje de recuperación de bloqueo de anuncios, debes agregar la etiqueta de bloqueo de anuncios a tu página de forma explícita. Consulta las instrucciones de etiquetado de Ad Manager y AdSense para obtener más información.

googlefc es el espacio de nombres global que usa la función de mensajería para usuarios en su API en el objeto Window de JavaScript.

Resúmenes de campos

Nombre Tipo Definición
googlefc.controlledMessagingFunction function(!Object) Es una función que determina si se debe continuar con la mensajería. Esta funcionalidad es compatible con todos los tipos de mensajes.
googlefc.callbackQueue !Array<!Object<string, function()>> | !Array<function()> | !googlefc.CallbackQueue Es una referencia a la cola de devolución de llamada para la ejecución asíncrona de consultas de mensajería del usuario.
googlefc.CallbackQueue !Objeto Es el tipo del objeto de la cola de devolución de llamada.
googlefc.AdBlockerStatusEnum !Object<string, number> Es una enumeración que representa el estado del bloqueador de anuncios del usuario.
googlefc.AllowAdsStatusEnum !Object<string, number> Es una enumeración que representa el estado de permitir anuncios del usuario.
googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum !Object<string, number> Es una enumeración que representa el estado inicial de rechazo de los estados de EE.UU. del usuario. Esto tiene en cuenta el estado de EE.UU. en el que se encuentra el usuario.
googlefc.GoogleFcConsentModeUserStatus !Objeto Es el tipo de datos que se mostrará para googlefc.getGoogleConsentModeValues.
googlefc.ConsentModePurposeStatusEnum !Object<string, number> Es una enumeración que representa la decisión del usuario final para un propósito del modo de consentimiento.
googlefc.usstatesoptout.overrideDnsLink undefined|boolean Es un valor booleano que se puede establecer como verdadero para usar tu propio vínculo personalizado de No vender ni compartir.
googlefc.ccpa.InitialCcpaStatusEnum

Heredado. Se prefiere googlefc.usstatesoptout.InitialUsStatesOptOutStatusEnum.
!Object<string, number> Es una enumeración que representa el estado inicial de las reglamentaciones estatales de EE.UU. del usuario.
googlefc.ccpa.overrideDnsLink

Heredado. Se prefiere googlefc.usstatesoptout.overrideDnsLink.
undefined|boolean Es un valor booleano que se puede establecer como verdadero para usar tu propio vínculo personalizado de No vender ni compartir.

Resúmenes de métodos

Nombre Tipo de datos que se muestra Definición
googlefc.showRevocationMessage() indefinido Borra el registro de consentimiento y vuelve a cargar el script de googlefc para mostrar el mensaje de consentimiento aplicable al usuario.
googlefc.getAdBlockerStatus() número Devuelve un valor en AdBlockerStatusEnum según el estado de bloqueo de anuncios del usuario.
googlefc.getAllowAdsStatus() número Devuelve un valor en AllowAdsStatusEnum según el estado de permitir anuncios del usuario.
googlefc.usstatesoptout.getInitialUsStatesOptOutStatus() número Devuelve un valor en InitialUsStatesOptOutStatusEnum según el estado inicial de rechazo de las reglamentaciones estatales de EE.UU. del usuario. Esto tiene en cuenta la reglamentación que se aplica al usuario según su ubicación actual.
googlefc.usstatesoptout.openConfirmationDialog(function(boolean)) indefinido Abre el diálogo de confirmación de rechazo de las reglamentaciones estatales de EE.UU. si se anula el vínculo predeterminado de No vender o No compartir.
googlefc.getGoogleConsentModeValues() !Objeto Devuelve un objeto googlefc.GoogleFcConsentModeUserStatus que contiene los valores actuales del modo de consentimiento para el usuario, uno para cada propósito disponible del modo de consentimiento.
googlefc.ccpa.getInitialCcpaStatus()

Heredado. Prefiere googlefc.usstatesoptout.getInitialUsStatesOptOutStatus().
número Devuelve un valor en InitialCcpaStatusEnum según el estado inicial de rechazo de las reglamentaciones estatales de EE.UU. del usuario.
googlefc.ccpa.openConfirmationDialog(function(boolean))

Heredado. Prefiere googlefc.usstatesoptout.openConfirmationDialog().
indefinido Abre el diálogo de confirmación de rechazo de las reglamentaciones estatales de EE.UU. si se anula el vínculo predeterminado de No vender o No compartir.

Pruebas y depuración en tu sitio

Privacidad y mensajería proporciona funciones de depuración y pruebas que te permiten ver cómo se ven los mensajes específicos, los subtipos de mensajes o las combinaciones de mensajes en tu sitio real.

Requisitos previos:

  • Los mensajes de los que deseas obtener una vista previa deben estar publicados en el sitio con el que estás realizando la prueba.

Puedes ver una vista previa en vivo en tu sitio con los siguientes parámetros de URL de depuración:

Parámetro de depuración Valores permitidos
fc alwaysshow (para activar el modo de depuración o vista previa)
fctype ab (mensajes de bloqueo de anuncios), ccpa (mensajes de rechazo de la reglamentación estatal de EE.UU.), gdpr (mensajes de consentimiento del RGPD), monetization (mensajes de Offerwall), usfl (mensajes de rechazo de la reglamentación estatal de EE.UU., específicos de Florida), usnat (mensajes de rechazo de la reglamentación estatal de EE.UU., todos los estados admitidos, excepto Florida; equivalente a ccpa)

Estos son algunos ejemplos de cómo usarlo para obtener una vista previa en tu sitio (foo.com):

  • Prueba los mensajes de rechazo de las reglamentaciones estatales de EE.UU. -- http://foo.com/?fc=alwaysshow&fctype=ccpa
  • Probar los mensajes del RGPD: http://foo.com/?fc=alwaysshow&fctype=gdpr

Campos: explicaciones y ejemplos

googlefc.controlledMessagingFunction {function(!Object)}

Es una función que determina si se deben mostrar mensajes. Se puede usar para controlar la renderización de mensajes en condiciones especificadas por el publicador, como el estado de suscripción o la URL de la página.

Cuando defines googlefc.controlledMessagingFunction en el objeto Window antes de que se carguen otros secuencias de comandos, los mensajes no se muestran hasta que llamas a message.proceed(boolean). Si llamas a message.proceed(true), la mensajería procederá como de costumbre, mientras que si llamas a message.proceed(false), no se mostrará ningún mensaje para la vista de página.

Ejemplo: Supongamos que tienes esta secuencia de comandos en la página, que define una función asíncrona determineIfUserIsSubscriber() que verifica si el usuario que accedió es suscriptor.

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

Este es un ejemplo de cómo podrías usar googlefc.controlledMessagingFunction para mostrar el mensaje solo a los usuarios que no son suscriptores.

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

También hay una extensión de esta función que permite a los publicadores especificar que solo se debe suprimir el Offerwall. Usa esta extensión de funciones para suprimir el muro de ofertas sin suprimir otros tipos de mensajes.

Para lograr una mensajería controlada específica del Offerwall, se pasa un parámetro adicional a message.proceed(), un Array de tipo googlefc.MessageTypeEnum.

Ejemplo: Este es un ejemplo del uso de googlefc.controlledMessagingFunction para suprimir solo la publicación del muro de ofertas para los suscriptores, sin suprimir otros tipos de mensajes:

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

Es una referencia a la cola de devolución de llamada global para la ejecución asíncrona de llamadas relacionadas con la mensajería. La única forma admitida de invocar cualquier función es agregarla a callbackQueue.

Dado que los diferentes tipos de datos están disponibles en diferentes momentos, se debe agregar una función como un mapa, con una de las siguientes cadenas como clave y la función que se ejecutará como valor.

Claves admitidas:

Nombre de la clave Uso Latencia relativa
CONSENT_API_READY Las funciones que se envían a la cola de devolución de llamada con la clave CONSENT_API_READY se ejecutan cuando se definen y se pueden llamar a las APIs de los marcos de consentimiento admitidos. A partir de este punto, la ejecución de cualquier función con clave CONSENT_API_READY agregada posteriormente es síncrona. Consulta las secciones sobre los marcos de trabajo de IAB para obtener detalles específicos de cada marco de trabajo. Baja
CONSENT_DATA_READY Las funciones que se envían a la cola de devolución de llamada con la clave CONSENT_DATA_READY se ejecutan cuando se conoce el consentimiento del usuario recopilado en un marco de consentimiento admitido (ya sea a partir de una ejecución anterior o una vez que el usuario interactúa con el mensaje de consentimiento). A partir de este punto, la ejecución de cualquier función con clave CONSENT_DATA_READY agregada posteriormente es síncrona. Alta
AD_BLOCK_DATA_READY Las funciones que se envían a la cola de devolución de llamada con la clave AD_BLOCK_DATA_READY se ejecutan cuando los datos de bloqueo de anuncios están disponibles en el flujo. A partir de este punto, la ejecución de cualquier función con clave AD_BLOCK_DATA_READY agregada posteriormente es síncrona. Alta
CONSENT_MODE_DATA_READY Las funciones que se envían a la cola de devolución de llamada con la clave CONSENT_MODE_DATA_READY se ejecutan cuando los datos del [modo de consentimiento](https://support.google.com/google-ads/answer/10000067) de Google (para usar con las etiquetas de Google Ads y Analytics) están disponibles en el flujo. Una vez que los datos del modo de consentimiento estén listos, podrás acceder a los valores del modo de consentimiento en cualquier momento con googlefc.getGoogleConsentModeValues. Medio
INITIAL_US_STATES_OPT_OUT_DATA_READY Las funciones que se envían a la cola de devolución de llamada con la clave INITIAL_US_STATES_OPT_OUT_DATA_READY se ejecutan cuando los datos de las reglamentaciones estatales de EE.UU. están disponibles en el flujo. Ten en cuenta que cualquier solicitud posterior de datos de las reglamentaciones estatales de EE.UU. se debe obtener llamando directamente a la API de GPP (__gpp). Medio
INITIAL_CCPA_DATA_READY Clave heredada para las reglamentaciones estatales de EE.UU. Prefiere INITIAL_US_STATES_OPT_OUT_DATA_READY.

Las funciones que se envían a la cola de devolución de llamada con la clave INITIAL_CCPA_DATA_READY se ejecutan cuando los datos de las reglamentaciones estatales de EE.UU. están disponibles en el flujo. Ten en cuenta que cualquier solicitud posterior de datos de las reglamentaciones estatales de EE.UU. se debe obtener llamando directamente a la API de GPP (__gpp).
Medio

googlefc.CallbackQueue {!Object}

Resumen del método:

Nombre Tipo Parámetro Tipo de datos que se muestra Rol
push(data) número data: Es un par clave-valor en el que la clave es uno de los tipos de disponibilidad de datos y el valor es una función de JavaScript que se ejecutará. Las claves de disponibilidad de datos aceptables son CONSENT_API_READY, CONSENT_DATA_READY, AD_BLOCK_DATA_READY, INITIAL_US_STATES_OPT_OUT_DATA_READY, CONSENT_MODE_DATA_READY y (heredada) INITIAL_CCPA_DATA_READY. Es la cantidad de comandos que se agregaron hasta el momento. Esto devuelve la longitud actual del array. Ejecuta la función que se pasó, en el orden en que los datos están disponibles y, luego, en el orden en que estas funciones se agregan a la cola.

Ejemplo:

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

Representa los diferentes estados de bloqueo de anuncios del usuario. Los diferentes estados son los siguientes:

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

Representa los diferentes estados de permitir anuncios con bloqueo de anuncios del usuario. Los diferentes estados son los siguientes:

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

Representa los diferentes estados de rechazo de las reglamentaciones estatales de EE.UU. del usuario. Los diferentes estados son los siguientes:

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}

Es el tipo de objeto que devuelve 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;
}

El valor de cada campo es un número que corresponde a un valor de enumeración googlefc.ConsentModePurposeStatusEnum.


googlefc.ConsentModePurposeStatusEnum{!Object<string, number>}

Representa los diferentes valores posibles de consentimiento del usuario final para un propósito del modo de consentimiento. Los diferentes valores son los siguientes:

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}

Establece este campo como verdadero para ocultar el vínculo predeterminado de No Vender ni Compartir y usar tu propio vínculo personalizado de No Vender ni Compartir.

Ejemplo:

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

Representa los diferentes estados de rechazo de las reglamentaciones estatales de EE.UU. del usuario. Los diferentes estados son los siguientes:

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}

Establece este campo como verdadero para ocultar el vínculo predeterminado de No Vender ni Compartir y usar tu propio vínculo personalizado de No Vender ni Compartir. Ten en cuenta que, si estableces este campo como verdadero, serás responsable de renderizar un vínculo de No vender ni compartir en tu sitio. Este campo se debe usar junto con openConfirmationDialog.

Ejemplo:

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

Métodos: explicaciones y ejemplos

googlefc.getConsentStatus(): {number}


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

  1. Ahora, siempre devuelve una lista vacía cuando se llama.

googlefc.showRevocationMessage(): {undefined}

Borra el registro de consentimiento actual de las reglamentaciones europeas, si está presente, y vuelve a mostrar el mensaje de las reglamentaciones europeas para permitir que el usuario cambie su decisión de consentimiento.

Ejemplo 1: Ejemplo simple de cómo configurar un vínculo que mostrará el mensaje de revocación cuando se haga clic en él:

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

Ejemplo 2: Si solo deseas que el vínculo sea visible cuando se apliquen las reglamentaciones de la UE al usuario actual, puedes usar la fila de devolución de llamada de googlefc con la API del MTC para actualizar de forma condicional la visualización del botón según el valor de gdprApplies una vez que se determine. Para ello, usa la clave de API de 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}

Devuelve un valor en AdBlockerStatusEnum según el estado de bloqueo de anuncios del usuario. La clave que se debe especificar para esta función es AD_BLOCK_DATA_READY.

Ejemplo:

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

Devuelve un valor en AllowAdsStatusEnum según el estado de permitir anuncios del usuario. La clave que se debe especificar para esta función es AD_BLOCK_DATA_READY.

Ejemplo:

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

Devuelve un valor en InitialUsStatesOptOutStatusEnum según el estado de rechazo de la reglamentación estatal de EE.UU. del usuario. La clave que se debe especificar para esta función es INITIAL_US_STATES_OPT_OUT_DATA_READY. Ten en cuenta que cualquier solicitud posterior de datos sobre las reglamentaciones estatales de EE.UU. se debe obtener llamando directamente a la API de GPP (__gpp).

Si anulas el vínculo No vender ni compartir mi información personal, puedes usar este método para determinar cuándo incluir el vínculo en tu sitio.

Ejemplo:

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

Abre el diálogo de confirmación de exclusión de las reglamentaciones estatales de EE.UU. si se anula el vínculo predeterminado de No vender. Una vez que el usuario interactúa con el diálogo de confirmación, se llama a la función de devolución de llamada proporcionada con true si el usuario decide inhabilitar la opción y false en caso contrario.

Ejemplo:

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

Devuelve un objeto googlefc.GoogleFcConsentModeUserStatus que contiene los valores actuales de cada propósito del modo de consentimiento, según la decisión de consentimiento del usuario.

Consulta Cómo usar las soluciones de administración del consentimiento de Google con compatibilidad con el modo de consentimiento para las reglamentaciones de la UE para conocer el uso previsto.


googlefc.ccpa.getInitialCcpaStatus(): {number}

Devuelve un valor en InitialCcpaStatusEnum según el estado de rechazo de la reglamentación estatal de EE.UU. del usuario. La clave que se debe especificar para esta función es INITIAL_CCPA_DATA_READY. Ten en cuenta que cualquier solicitud posterior de datos de reglamentaciones estatales de EE.UU. se debe obtener llamando directamente a la API de GPP (__gpp).

Ejemplo:

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

Abre el diálogo de confirmación de exclusión de las reglamentaciones estatales de EE.UU. si se anula el vínculo predeterminado de No vender. Una vez que el usuario interactúa con el diálogo de confirmación, se llama a la función de devolución de llamada proporcionada con true si el usuario decide inhabilitar la opción y false en cualquier otro caso.

Ejemplo:

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

Si utilizas las soluciones de administración del consentimiento de Google para recopilar el consentimiento según el RGPD en virtud del marco de trabajo del MTC v2 de IAB, debes usar la API del MTC v2 de IAB.

Puedes usar la clave de la cola de devolución de llamada CONSENT_API_READY para garantizar que las devoluciones de llamada correspondientes se invoquen solo cuando se defina la API de la versión 2 del MTC de IAB en la página. Se debe usar junto con el comando 'addEventListener' de la API de la versión 2 del MTC de IAB.

Ejemplo:

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

Puedes usar la clave de la cola de devolución de llamada CONSENT_DATA_READY para garantizar que las devoluciones de llamada correspondientes se invoquen solo cuando se recopile el consentimiento del usuario y se pueda acceder a él con la API de la versión 2 del MTC de IAB. Se puede usar en conjunto con el comando 'addEventListener'. Los datos proporcionados en la primera invocación de la devolución de llamada que proporcionaste contendrán las selecciones de consentimiento del usuario (siempre y cuando la versión 2 del MTC se aplique a este usuario). Ten en cuenta que, con el lanzamiento de la versión 2.2 del MTC, el comando 'getTCData' ahora está obsoleto.

Ejemplo:

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

Las soluciones de administración del consentimiento de Google pueden interpretar las selecciones de consentimiento de tus usuarios según las reglamentaciones de la UE para el modo de consentimiento de Google (obtén más información en el Centro de ayuda).

El modo de consentimiento se puede implementar en el modo básico o el modo avanzado, como se describe en la documentación de Google Ads y Analytics. Debes consultar con tu departamento legal qué modo de consentimiento implementar para cumplir con tus requisitos legales.

El modo de consentimiento avanzado se admite de forma predeterminada. Una vez que habilites el modo de consentimiento en la IU de Privacidad y mensajería, no se requiere ningún trabajo adicional.

Para implementar el modo de consentimiento básico con las soluciones de administración del consentimiento de Google, puedes usar la clave de la cola de devolución de llamada CONSENT_MODE_DATA_READY para cargar de forma condicional tus etiquetas de Google Ads y Analytics una vez que los datos del modo de consentimiento estén disponibles. Los datos del modo de consentimiento estarán disponibles después de que Funding Choices determine que el modo de consentimiento no se aplica a esta solicitud (por ejemplo, porque las reglamentaciones de la UE no se aplican a esta solicitud) o después de que un usuario haya tomado una decisión de consentimiento según las reglamentaciones de la UE. Debes consultar con tu departamento legal sobre los criterios que se deben usar para determinar si tus etiquetas se pueden cargar una vez que esté disponible el modo de consentimiento.

Por ejemplo, para cargar tus etiquetas una vez que los datos del modo de consentimiento estén disponibles, independientemente de la decisión de consentimiento del usuario final, haz lo siguiente:

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

También puedes usar la API de googlefc.getGoogleConsentModeValues() para obtener los valores de los fines individuales del modo de consentimiento cuando los datos del modo de consentimiento estén disponibles. Esta API devuelve un objeto GoogleFcConsentModeUserStatus que contiene un campo para cada propósito del modo de consentimiento admitido. El valor de cada campo es un valor de enumeración que indica el valor de ese propósito del modo de consentimiento.

Por ejemplo, puedes usar googlefc.getGoogleConsentModeValues() para desbloquear tus etiquetas de Google Ads y Analytics solo en los siguientes casos:

  • El usuario final toma una decisión de consentimiento según las reglamentaciones de la UE que otorga el consentimiento para todos los fines del modo de consentimiento o
  • Todos los fines del modo de consentimiento son inaplicables para la solicitud actual (lo que podría suceder si no se aplican los reglamentos de la UE o si el modo de consentimiento no está configurado para uno o más fines en Privacidad y mensajería).
<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>

Si utilizas las soluciones de administración del consentimiento de Google para proporcionar mensajes de rechazo de las reglamentaciones estatales de EE.UU. a los usuarios finales en virtud del marco de trabajo de la GPP de IAB, debes usar la API de la GPP de IAB.

Debido a la naturaleza de exclusión voluntaria de las reglamentaciones estatales de EE.UU., puedes usar la clave de la fila de devolución de llamada CONSENT_API_READY o CONSENT_DATA_READY para asegurarte de que se pueda llamar a la API de GPP de IAB y que devuelva datos de consentimiento en el momento en que se invocan las devoluciones de llamada.

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

Si utilizas las soluciones de administración del consentimiento de Google para proporcionar mensajes de rechazo de las reglamentaciones estatales de EE.UU. a los usuarios finales en virtud del marco de trabajo de GPP de IAB, puedes proporcionar tu propio vínculo personalizado de No vender ni compartir estableciendo la marca googlefc.usstatesoptout.overrideDnsLink en 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>

Esto garantiza que no se renderice el vínculo predeterminado de No vender ni compartir. Luego, debes controlar la interacción del usuario con tu vínculo personalizado de No vender o No compartir invocando el diálogo de confirmación de exclusión de las reglamentaciones estatales de EE.UU.

Ten en cuenta que, cuando uses tu propio vínculo personalizado de No vender o No compartir, serás responsable de asegurarte de que cumpla con las reglamentaciones estatales de EE.UU.

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