Laden und Aktualisieren von Anzeigen steuern

In unseren Startleitfaden und grundlegenden Konzeptbeispielen ist das Google Publisher-Tag Die Methode display() der GPT-Bibliothek wird verwendet. um eine Anzeigenfläche zu registrieren und anzuzeigen. Es kann jedoch Situationen geben, in denen oder sogar notwendig, um diese Aktionen zu trennen, wann Anzeigencontent geladen wird. Wenn Sie zum Beispiel mit einem eine Plattform zur Einwilligungsverwaltung oder die Anforderung von Anzeigeninhalten aufgrund eines Aktion ausführen.

In diesem Leitfaden beschäftigen wir uns mit den Mechanismen, die GPT zur Verfügung stellt, das Laden von Anzeigeninhalten zu steuern und bei Bedarf neue Anzeigeninhalte abzurufen. Vollständiger Code ereignisbasierte Anfragen Beispielseite.

Laden von Anzeigen steuern

Standardmäßig verhält sich die Methode display() wie folgt: Anzeigeninhalte auf einer Anzeigenfläche registrieren, anfordern und rendern. Die automatische können über die Funktion PubAdsService.disableInitialLoad()-Methode.

Ist das anfängliche Laden deaktiviert, wird bei display()-Aufrufen nur die Anzeigenfläche registriert. Anzeigeninhalte werden erst geladen, wenn eine zweite Aktion ausgeführt wird. So können Sie Sie können genau steuern, wann Anzeigenanfragen gestellt werden.

Um unbeabsichtigte Anzeigenanfragen zu vermeiden, muss disableInitialLoad() aufgerufen werden bevor Sie den Dienst aktivieren und display() aufrufen.

<!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 diesem Beispiel ist der anfängliche Ladevorgang deaktiviert, sodass keine Anzeigenanfrage gesendet wird. und kein Anzeigeninhalt gerendert wird, wenn display() aufgerufen wird. Der Slot ist bereit, eine Anzeige akzeptieren und einblenden, aber eine Anzeigenanfrage wird erst gesendet, wenn die Anzeigenfläche aktualisiert.

Aktualisieren

Die Methode PubAdsService.refresh() wird verwendet, um ein oder Flächen mit neuem Anzeigeninhalt. Diese Methode kann für Anzeigenflächen verwendet werden, noch keine Inhalte geladen wurden (aufgrund von disableInitialLoad()) oder das einer bereits gefüllten Anzeigenfläche. Allerdings können nur Anzeigenflächen, die durch den Aufruf von display() registriert wurden, können aktualisiert werden.

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

Klickt ein Nutzer in diesem geänderten Beispiel auf die Schaltfläche „Anzeige einblenden/aktualisieren“, die Schaltfläche Die Methode refresh() wird aufgerufen. Dadurch wird eine Anfrage zum Abrufen neuer Anzeigeninhalte ausgelöst. und laden sie in den registrierten Slot, wobei alle vorhandenen Inhalte überschrieben werden.

Beachten Sie, dass im obigen Beispiel die Methode refresh() ohne Dadurch werden alle registrierten Anzeigenflächen aktualisiert. Sie können bestimmte Anzeigenflächen auch aktualisieren, indem Sie ein Array Slots für die Methode refresh(). Weitere Informationen finden Sie im Abschnitt Anzeigenflächen aktualisieren. für ein Beispiel.

Best Practices

Für die Arbeit mit refresh() gibt es einige Best Practices, die Sie beachten sollten einhalten.

  1. Aktualisieren Sie die Seite nicht zu schnell.

    Werden Anzeigenflächen zu schnell aktualisiert, können Ihre Anzeigenanfragen gedrosselt werden. Um dies zu verhindern, sollten Sie Slots nicht öfter als einmal alle 30 Mal aktualisieren. Sekunden.

  2. clear() nicht unnötig anrufen

    Rufen Sie beim Aktualisieren einer Anzeigenfläche PubAdsService.clear(). Das ist nicht nötig, refresh() ersetzt den Inhalt der angegebenen Anzeigenfläche unabhängig von ob zuvor Anzeigeninhalte geladen wurden. clear() wird sofort angerufen vor dem Aufruf von refresh() die Zeit nur um ein leeres Slot-Feld für den Nutzer sichtbar ist.

  3. Nur sichtbare Anzeigenflächen aktualisieren

    Den Inhalt von Anzeigenflächen, die nie sichtbar sind, mit refresh() ersetzen kann die ActiveView-Rate erheblich sinken. Die Mit dem Ereignis ImpressionViewableEvent können Sie ermitteln, wann eine Anzeigenfläche sichtbar wurde (siehe Beispiel unten).

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