Controle la carga y la actualización de anuncios

En nuestros ejemplos de conceptos básicos y de introducción, se usa el método display() de la biblioteca de Google Publisher Tag (GPT) para registrar y mostrar un espacio de anuncios. Sin embargo, a veces puede ser preferible o incluso necesario separar estas acciones para controlar con mayor precisión cuándo se carga el contenido del anuncio. Por ejemplo, cuando trabajas con un de administración de consentimiento o solicitar contenido de anuncios como resultado de que un usuario acción.

En esta guía, exploraremos los mecanismos que proporciona GPT para controlar la carga de contenido de anuncios y recuperar contenido de anuncios nuevo a pedido. Puedes encontrar el código completo de este ejemplo en la página de ejemplo de solicitudes basadas en eventos.

Cómo controlar la carga de anuncios

De forma predeterminada, el comportamiento del método display() es registrar, solicitar y renderizar contenido de anuncios en un espacio de anuncios. El sistema automático la solicitud y la renderización del contenido del anuncio se pueden inhabilitar mediante el PubAdsService.disableInitialLoad().

Con la carga inicial inhabilitada, las llamadas a display() solo registrarán el espacio publicitario. No se cargará contenido del anuncio hasta que se realice una segunda acción. Esto te permite controlan con precisión cuándo se realizan las solicitudes de anuncios.

Para evitar realizar solicitudes de anuncios no intencionales, se debe llamar a disableInitialLoad() antes de habilitar el servicio y antes de llamar a display().

<!doctype html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="description" content="Request GPT ads based on events." />
    <title>Event-based ad requests</title>
    <script
      async
      src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"
      crossorigin="anonymous"
    ></script>
    <script>
      window.googletag = window.googletag || { cmd: [] };

      googletag.cmd.push(() => {
        // Define the ad slot.
        googletag
          .defineSlot("/6355419/Travel", [728, 90], "div-for-slot")
          .setTargeting("test", "event")
          .addService(googletag.pubads());

        // Disable initial load.
        // This prevents GPT from automatically fetching ads when display is called.
        googletag.pubads().disableInitialLoad();
        googletag.enableServices();
      });
    </script>
    <style></style>
  </head>
  <body>
    <div id="div-for-slot" style="width: 300px; height: 250px"></div>
    <script>
      googletag.cmd.push(() => {
        // Register the ad slot.
        // An ad will not be fetched until refresh is called.
        googletag.display("div-for-slot");
      });
    </script>
  </body>
</html>

En este ejemplo, la carga inicial está inhabilitada, lo que garantiza que no se realice ninguna solicitud de anuncio. y no se renderiza contenido del anuncio cuando se llama a display(). El espacio está listo para aceptar y mostrar un anuncio, pero no se realizará una solicitud de anuncio hasta que se actualice el espacio.

Actualizar

El método PubAdsService.refresh() se usa para propagar un espacio o varios con contenido de anuncios nuevo. Este método se puede usar en los espacios que aún no cargaron ningún contenido (debido a disableInitialLoad()) o para reemplazar el contenido de un espacio que ya se propagó. Sin embargo, solo las ranuras registrados llamando a display() son aptos para actualizarse.

<!doctype html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="description" content="Request GPT ads based on events." />
    <title>Event-based ad requests</title>
    <script
      async
      src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"
      crossorigin="anonymous"
    ></script>
    <script>
      window.googletag = window.googletag || { cmd: [] };

      googletag.cmd.push(() => {
        // Define the ad slot.
        googletag
          .defineSlot("/6355419/Travel", [728, 90], "div-for-slot")
          .setTargeting("test", "event")
          .addService(googletag.pubads());

        // Disable initial load.
        // This prevents GPT from automatically fetching ads when display is called.
        googletag.pubads().disableInitialLoad();
        googletag.enableServices();
      });
    </script>
    <style></style>
  </head>
  <body>
    <div id="div-for-slot" style="width: 300px; height: 250px"></div>
    <button id="showAdButton">Show/Refresh Ad</button>
    <script>
      googletag.cmd.push(() => {
        // Register the ad slot.
        // An ad will not be fetched until refresh is called.
        googletag.display("div-for-slot");

        // Register click event handler.
        document.getElementById("showAdButton").addEventListener("click", () => {
          googletag.cmd.push(() => {
            googletag.pubads().refresh();
          });
        });
      });
    </script>
  </body>
</html>

En este ejemplo modificado, cuando un usuario hace clic en el botón refresh(). Esto activa una solicitud para recuperar contenido de anuncios nuevo y cargarlo en el espacio registrado, reemplazando el contenido preexistente.

Ten en cuenta que, en el ejemplo anterior, se llama al método refresh() sin parámetros, que actualizan todos los espacios publicitarios registrados. Sin embargo, también es posible actualizar espacios publicitarios específicos pasando un array de espacios al método refresh(). Consulta el ejemplo de Actualiza los espacios de anuncios para ver un ejemplo de esto.

Prácticas recomendadas

Cuando trabajas con refresh(), debes tener en cuenta algunas prácticas recomendadas cumplir.

  1. No actualices demasiado rápido.

    Si actualizas los espacios publicitarios demasiado rápido, es posible que se limiten tus solicitudes de anuncios. Para evitar esto, evita actualizar los intervalos con mayor frecuencia que una vez cada 30 segundos.

  2. No llames a clear() de forma innecesaria.

    Cuando actualices un espacio publicitario, no llames primero a PubAdsService.clear(). Esto no es necesario, ya que refresh() reemplaza el contenido del espacio especificado, independientemente de si se cargó algún contenido del anuncio con anterioridad. Llamando al clear() de inmediato antes de llamar a refresh() solo aumentará la cantidad de tiempo que se liberará es visible para el usuario.

  3. Actualizar solo espacios publicitarios visibles

    Se usa refresh() para reemplazar el contenido de espacios publicitarios que nunca son visibles puede disminuir significativamente su tasa de Vista activa. Se puede usar ImpressionViewableEvent para determinar cuándo un espacio de anuncios se vuelve visible, como se muestra en el siguiente ejemplo:

    googletag.cmd.push(function() {
      var REFRESH_KEY = 'refresh';
      var REFRESH_VALUE = 'true';
    
      googletag.defineSlot('/6355419/Travel',[728, 90], 'div-for-slot')
          .setTargeting(REFRESH_KEY, REFRESH_VALUE)
          .setTargeting('test', 'event')
          .addService(googletag.pubads());
    
      // Number of seconds to wait after the slot becomes viewable.
      var SECONDS_TO_WAIT_AFTER_VIEWABILITY = 60;
    
      googletag.pubads().addEventListener('impressionViewable', function(event) {
        var slot = event.slot;
        if (slot.getTargeting(REFRESH_KEY).indexOf(REFRESH_VALUE) > -1) {
          setTimeout(function() {
            googletag.pubads().refresh([slot]);
          }, SECONDS_TO_WAIT_AFTER_VIEWABILITY * 1000);
        }
      });
    
      googletag.enableServices();
    });