Kontroluj ładowanie i odświeżanie reklam

W przykładach dotyczących rozpoczęcia korzystania z tagów i podstawowych koncepcji używamy metody display() z biblioteki tagów wydawcy Google (GPT) do rejestrowania i wyświetlania boksu reklamowego. Czasami jednak może być korzystne lub nawet konieczne rozdzielenie tych działań, aby uzyskać większą kontrolę nad czasem wczytywania treści reklamy. Może to być na przykład praca z platformą do zarządzania zgodami lub żądanie treści reklamowych w wyniku działania użytkownika.

W tym przewodniku omówimy mechanizmy udostępniane przez GPT, które umożliwiają kontrolowanie wczytywania treści reklamy i pobieranie nowych treści reklamy na żądanie. Pełny kod tego przykładu znajdziesz na stronie przykładów Żądania oparte na zdarzeniach.

Kontrola wczytywania reklam

Domyślnie metoda display() działa tak: rejestrowanie, żądanie i renderowanie treści reklamy w boksie reklamowym. Automatyczne wysyłanie żądań i renderowanie treści reklamy można wyłączyć za pomocą metody PubAdsService.disableInitialLoad().

Gdy wstępne wczytywanie jest wyłączone, wywołania funkcji display() będą rejestrować tylko boks reklamowy. Treść reklamy nie będzie wczytywana do czasu wykonania drugiego działania. Dzięki temu możesz dokładnie kontrolować, kiedy są zgłaszane żądania reklamy.

Aby uniknąć niezamierzonych żądań reklamy, należy wywołać funkcję disableInitialLoad() przed włączeniem usługi, a przed wywołaniem usługi 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>

W tym przykładzie wstępne pobieranie jest wyłączone, co zapewnia, że podczas wywołania funkcji display() nie zostanie wysłane żadne żądanie reklamy ani nie zostanie wyrenderowana żadna treść reklamy. Miejsce jest gotowe do zaakceptuje i wyświetli reklamę, ale żądanie reklamy nie zostanie wysłane, dopóki boks odświeżono.

Odśwież

Metoda PubAdsService.refresh() służy do wypełniania pól boksach reklamowych z nową treścią. Tej metody można używać w przypadku boksów, które jeszcze nie mają żadnych treści (z powodu disableInitialLoad()), lub do zastąpienia treści już wypełnionego boksu. Można jednak odświeżyć tylko te sloty, które zostały zarejestrowane przez wywołanie 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>
    <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>

W tym zmodyfikowanym przykładzie, gdy użytkownik kliknie przycisk „Pokaż/odśwież reklamę” , Wywoływana jest metoda refresh(). Powoduje to wysłanie żądania pobrania nowej treści reklamy i wczytać ją w zarejestrowanym boksie, zastępując w ten sposób wszelkie wcześniej utworzone treści.

Zwróć uwagę, że w poprzednim przykładzie metoda refresh() jest wywoływana bez argumentu , co powoduje odświeżenie wszystkich zarejestrowanych boksów reklamowych. Można też odświeżyć konkretne boksy reklamowe, przekazując tablicę boksów do metody refresh(). Przykładem jest przykładowa implementacja odświeżania miejsc na reklamę.

Sprawdzone metody

Przy współpracy z firmą refresh() warto stosować kilka sprawdzonych metod, przestrzegane.

  1. Nie odświeżaj strony zbyt szybko.

    Zbyt szybkie odświeżanie boksów reklamowych może spowodować ograniczenie żądań reklam. Aby temu zapobiec, nie odświeżaj boksów częściej niż raz na 30 sekund sek.

  2. Nie dzwoń pod numer clear() bez potrzeby

    Podczas odświeżania boksu reklamowego nie wywołuj najpierw funkcji PubAdsService.clear(). Nie jest to konieczne, ponieważ refresh() zastępuje zawartość określonego boksu reklamowego niezależnie od tego, czy wcześniej wczytano jakąś treść reklamy. Wywołanie clear() bezpośrednio przed wywołaniem refresh() spowoduje tylko wydłużenie czasu, przez jaki pusty slot jest widoczny dla użytkownika.

  3. Odświeżaj tylko widoczne boksy reklamowe

    Używanie refresh() do zastępowania treści w miejscach na reklamy, które nigdy nie są widoczne, może znacznie obniżyć współczynnik aktywnego wyświetlania. Zdarzenia ImpressionViewableEvent można używać do określania, kiedy boks reklamowy stał się widoczny, jak pokazano w tym przykładzie:

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