Controlla il caricamento e l'aggiornamento degli annunci

Nei nostri esempi di inizio e di concetti di base, viene utilizzato il metodo display() della libreria Tag publisher di Google (GPT) per registrare e mostrare un'area annuncio. Tuttavia, a volte può essere preferibile o addirittura necessario separare queste azioni per controllare con maggiore precisione il momento in cui vengono caricati i contenuti dell'annuncio. Ad esempio, quando lavori con un piattaforma di gestione del consenso o richiesta di contenuti pubblicitari in seguito a un utente un'azione.

In questa guida esploreremo i meccanismi forniti da GPT per controllare il caricamento dei contenuti degli annunci e recuperare nuovi contenuti degli annunci su richiesta. Codice completo di questo esempio è disponibile nella scheda Richieste basate su eventi. pagina di esempio.

Controllare il caricamento degli annunci

Per impostazione predefinita, il comportamento del metodo display() è registrare, richiedere e visualizzare i contenuti dell'annuncio in uno spazio annuncio. L'automazione la richiesta e la visualizzazione dei contenuti dell'annuncio possono essere disattivate utilizzando PubAdsService.disableInitialLoad().

Se il caricamento iniziale è disattivato, le chiamate a display() registreranno solo l'area annuncio. I contenuti degli annunci non verranno caricati finché non viene intrapresa una seconda azione. In questo modo puoi controllare con precisione quando vengono effettuate le richieste di annunci.

Per evitare richieste di annunci involontarie, è necessario chiamare disableInitialLoad() prima di abilitare il servizio e di chiamare 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>

In questo esempio, il caricamento iniziale è disattivato per garantire che non venga effettuata alcuna richiesta di annuncio e che non vengano visualizzati contenuti dell'annuncio quando viene chiamata display(). L'area è pronta per accettare e mostrare un annuncio, ma la richiesta di annuncio non verrà effettuata finché l'area non verrà aggiornata.

Aggiorna

Il metodo PubAdsService.refresh() viene utilizzato per compilare uno o più annunci con nuovi contenuti. Questo metodo può essere utilizzato per gli slot che non hanno ancora caricato contenuti (a causa di disableInitialLoad()) o per sostituire i contenuti di uno slot già compilato. Tuttavia, solo gli spazi che sono stati registrati chiamando display() sono idonei per l'aggiornamento.

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

In questo esempio modificato, quando un utente fa clic su "Mostra/Aggiorna annuncio" il pulsante Viene chiamato il metodo refresh(). Viene attivata una richiesta di recupero dei nuovi contenuti dell'annuncio e del loro caricamento nello spazio registrato, sovrascrivendo eventuali contenuti preesistenti.

Tieni presente che nell'esempio precedente il metodo refresh() viene chiamato senza con l'effetto di aggiornare tutte le aree annuncio registrate. Tuttavia, è anche possibile aggiornare aree annuncio specifiche passando un array di slot al metodo refresh(). Per un esempio, consulta l'esempio di aggiornamento degli slot annunci.

Best practice

Quando si utilizza refresh(), è necessario seguire alcune best practice.

  1. Non aggiornare troppo rapidamente.

    L'aggiornamento troppo rapido delle aree annuncio può causare una limitazione delle richieste di annunci. Per evitare questo problema, evita di aggiornare gli slot più di una volta ogni 30 secondi.

  2. Non chiamare clear() inutilmente

    Quando aggiorni un'area annuncio, non chiama prima PubAdsService.clear(). Non è necessario, poiché refresh() sostituisce i contenuti dell'area specificata, indipendentemente dall'eventuale caricamento precedente dei contenuti dell'annuncio. Chiamata a clear() immediatamente prima di chiamare refresh() aumenterà solo il periodo di tempo in cui uno spazio vuoto è visibile all'utente.

  3. Aggiorna solo le aree annuncio visibili

    Utilizzo di refresh() per sostituire i contenuti delle aree annuncio non visibili può ridurre significativamente la tua percentuale di Visualizzazione attiva. L'evento ImpressionViewableEvent può essere utilizzato per determinare quando un'area annuncio è diventata visibile, come mostrato nell'esempio seguente:

    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();
    });