Controle la carga y la actualización de anuncios

En nuestros ejemplos introductorios y de conceptos básicos, la etiqueta Google Publisher Tag Se usa el método display() de la biblioteca (GPT) para registrar y mostrar un espacio publicitario. Sin embargo, en algunas ocasiones puede ser preferibles o incluso necesarias separar estas acciones, para controlan con precisión cuándo se carga el contenido del anuncio. Por ejemplo, cuando trabajas con un de administración de consentimiento o solicitar contenidos de anuncios como resultado de que un usuario acción.

En esta guía, exploraremos los mecanismos que ofrece GPT para controlar la carga de contenido de anuncios y obtener nuevo contenido de anuncios a pedido. Código completo Para este ejemplo, puedes consultar las solicitudes basadas en eventos, página de muestra.

Controla la carga de anuncios

De forma predeterminada, el comportamiento del método display() es el siguiente: registrar, solicitar y renderizar el contenido del anuncio en un espacio publicitario El sistema automático la solicitud y la renderización del contenido del anuncio pueden inhabilitarse a través del 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");

        // Register click event handler.
        document.getElementById("showAdButton").addEventListener("click", () => {
          googletag.cmd.push(() => {
            googletag.pubads().refresh();
          });
        });
      });
    </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(). La ranura está lista para aceptar y mostrar un anuncio, pero no se realizará una solicitud de anuncio hasta que el espacio actual.

Actualizar

El método PubAdsService.refresh() se usa para completar un con contenido del anuncio nuevo. Este método puede usarse en ranuras que tienen no debes cargar ningún contenido (debido a disableInitialLoad()), o bien para reemplazar el el contenido de un espacio ya propagado. Sin embargo, solo las ranuras registradas llamando a display() son aptas 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 nuevo contenido del anuncio. y cargarlo en el espacio registrado para sobrescribir todo 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 una serie de ranuras para el método refresh(). Consulta el artículo Cómo actualizar espacios publicitarios como muestra de ejemplo.

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 las ranuras con más frecuencia que una vez cada 30 segundos.

  2. No llames a clear() innecesariamente.

    Cuando actualices un espacio publicitario, no llames PubAdsService.clear() primero. 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 reducir significativamente su tasa de Vista activa. El ImpressionViewableEvent se puede usar para lo siguiente: determina cuándo un espacio publicitario se hace visible, como 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();
    });