Controlla il caricamento e l'aggiornamento degli annunci

Nei nostri esempi iniziali e concettuali di base, il tag publisher di Google Viene utilizzato il metodo display() della libreria (GPT) registrare e visualizzare un'area annuncio. Tuttavia, a volte può capitare preferibile o addirittura necessarie per separare queste azioni, in modo da controllare in modo preciso quando il contenuto dell'annuncio viene caricato. 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 esamineremo i meccanismi forniti da GPT per: controllare il caricamento dei contenuti degli annunci e recuperare nuovi contenuti degli annunci on demand. Codice completo di questo esempio è disponibile nella scheda Richieste basate su eventi. pagina di esempio.

Controlla il caricamento degli annunci

Per impostazione predefinita, il comportamento del metodo display() è registrare, richiedere e visualizzare il contenuto dell'annuncio in un'area annuncio. L'impostazione automatica la richiesta e la visualizzazione dei contenuti dell'annuncio possono essere disattivate tramite PubAdsService.disableInitialLoad().

Con 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. Questo consente di 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 il numero 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>

In questo esempio, il caricamento iniziale è disattivato per garantire che non venga effettuata alcuna richiesta di annuncio. e non viene visualizzato alcun contenuto dell'annuncio quando viene chiamato display(). Lo slot è pronto accetta e visualizza un annuncio, ma la richiesta di annuncio non verrà effettuata finché l'area aggiornato.

Aggiorna

Il metodo PubAdsService.refresh() viene utilizzato per compilare ad altre aree con nuovi contenuti dell'annuncio. Questo metodo può essere utilizzato negli slot con non deve ancora caricare contenuti (a causa dell'errore disableInitialLoad()) o per sostituire i contenuti di un'area già compilata. Tuttavia, solo gli slot 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(). Questo attiva una richiesta di recupero di nuovi contenuti dell'annuncio e caricarlo nell'area registrata, 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(). Consulta la sezione Aggiornare aree annuncio. .

Best practice

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

  1. Non aggiornare troppo rapidamente.

    L'aggiornamento troppo rapido delle aree annuncio può causare 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 il numero clear() inutilmente

    Non chiamare quando aggiorni un'area annuncio PubAdsService.clear(). Questo non è necessario perché refresh() sostituisce i contenuti dell'area specificata, indipendentemente da se i contenuti degli annunci sono stati caricati in precedenza. Chiamata a clear() immediatamente prima di chiamare refresh() aumenterà solo il 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. La ImpressionViewableEvent può essere utilizzato per Determina quando un'area annuncio diventa visibile, come nell'esempio riportato di seguito.

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