Controlla il caricamento e l'aggiornamento degli annunci

Negli esempi di concetti iniziali e di base, il metodo display() della libreria dei tag publisher di Google (GPT) viene utilizzato per registrare e visualizzare un'area annuncio. Tuttavia, in alcuni casi può essere opportuno o addirittura necessario separare queste azioni per avere un controllo più preciso sul caricamento dei contenuti degli annunci. ad esempio quando lavori con una piattaforma di gestione del consenso o richiedi contenuti dell'annuncio come risultato di un'azione dell'utente.

In questa guida esamineremo i meccanismi forniti da GPT per controllare il caricamento dei contenuti degli annunci e recuperare nuovi contenuti degli annunci on demand. Il codice completo per questo esempio è disponibile nella pagina di esempio delle richieste basate sugli eventi.

Controllare il caricamento degli annunci

Per impostazione predefinita, il comportamento del metodo display() consiste nel registrare, richiedere e visualizzare il contenuto dell'annuncio in un'area annuncio. Le richieste automatiche e il rendering dei contenuti degli annunci possono essere disattivate tramite il metodo PubAdsService.disableInitialLoad().

Con il caricamento iniziale disattivato, le chiamate al numero display() registrerà solo l'area annuncio. Nessun contenuto dell'annuncio verrà caricato finché non viene eseguita una seconda azione. Ciò consente di controllare con precisione quando vengono effettuate le richieste di annunci.

Per evitare di effettuare richieste di annunci non intenzionali, disableInitialLoad() deve essere chiamato prima di attivare il servizio e prima 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"></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>

In questo esempio, il caricamento iniziale viene disattivato per garantire che non venga effettuata alcuna richiesta di annuncio e che non venga visualizzato alcun contenuto dell'annuncio quando viene richiamato display(). L'area annuncio è pronta per l'accettazione e la visualizzazione di un annuncio, ma non verrà effettuata una richiesta di annuncio fino all'aggiornamento dell'area.

Aggiorna

Il metodo PubAdsService.refresh() viene utilizzato per compilare uno o più slot con nuovi contenuti dell'annuncio. Questo metodo può essere utilizzato in aree che non hanno ancora caricato i contenuti (a causa di disableInitialLoad()) o per sostituire i contenuti di un'area già compilata. Tuttavia, solo gli slot 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"></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 sul pulsante "Mostra/Aggiorna annuncio", viene richiamato il metodo refresh(). In questo modo viene attivata una richiesta di recupero di nuovi contenuti dell'annuncio e il caricamento nello spazio registrato, sovrascrivendo qualsiasi contenuto preesistente.

Tieni presente che nell'esempio precedente il metodo refresh() viene richiamato senza parametri, il che ha l'effetto di aggiornare tutte le aree annuncio registrate. Tuttavia, puoi anche aggiornare aree annuncio specifiche passando un array di aree al metodo refresh(). Per un esempio, consulta l'esempio Aggiorna aree annuncio.

Best practice

Quando lavori con refresh(), devi seguire alcune best practice.

  1. Non aggiornare troppo velocemente.

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

  2. Non chiamare clear() inutilmente

    Quando aggiorni un'area annuncio, non chiamare prima PubAdsService.clear(), Questa operazione non è necessaria, dal momento che refresh() sostituisce i contenuti dell'area specificata, indipendentemente dal caricamento precedente dei contenuti degli annunci. Chiamare clear() immediatamente prima di chiamare refresh() aumenta solo la quantità di tempo in cui un'area vuota è visibile all'utente.

  3. Aggiorna solo le aree annuncio visibili

    L'utilizzo di refresh() per sostituire i contenuti di aree annuncio che non sono mai visualizzabili può ridurre significativamente la percentuale di Visualizzazione attiva. ImpressionImpressionEvent può essere utilizzato per determinare quando un'area annuncio è diventata visibile, come 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();
    });