Kontroluj ładowanie i odświeżanie reklam

W przykładach wprowadzających i podstawowych pojęciach jest tag wydawcy Google, jest używana metoda display() biblioteki (GPT) , aby zarejestrować i wyświetlić boks reklamowy. Jednak czasami może się zdarzyć, jest zalecane lub w ogóle konieczne rozdzielenie tych działań w celu dokładnie kontrolować, kiedy treść reklamy ma być wczytywana. Na przykład podczas pracy z do zarządzania zgodą użytkowników lub wysyłania żądań treści reklamy przez użytkownika działania.

W tym przewodniku omówimy mechanizmy dostarczane przez GPT, kontrolować wczytywanie treści reklam i pobierać nowe treści na żądanie. Pełny kod w tym przykładzie. Znajdziesz je w żądaniach opartych na zdarzeniach. przykładowej strony.

Kontrola wczytywania reklam

Domyślnie metoda display() działa tak: rejestrowanie, żądanie i renderowanie treści reklamy w boksie reklamowym. Automatyczna żądania i renderowania treści reklamy można wyłączyć za pomocą PubAdsService.disableInitialLoad().

Gdy wczytywanie początkowe jest wyłączone, wywołania funkcji display() rejestrują tylko boks reklamowy. Treść reklamy nie będzie wczytywana do czasu wykonania drugiego działania. Dzięki temu możesz: precyzyjnie kontrolować, kiedy są wysyłane żą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");

        // Register click event handler.
        document.getElementById("showAdButton").addEventListener("click", () => {
          googletag.cmd.push(() => {
            googletag.pubads().refresh();
          });
        });
      });
    </script>
  </body>
</html>

W tym przykładzie początkowe wczytywanie jest wyłączone, co skutkuje brakiem żądania reklamy. a po wywołaniu funkcji display() treść reklamy nie jest renderowana. Miejsce jest gotowe do zaakceptuje i wyświetli reklamę, ale żądanie reklamy nie zostanie wysłane, dopóki boks odświeżony.

Odśwież

Metoda PubAdsService.refresh() służy do wypełniania pól boksach reklamowych z nową treścią. Tej metody można użyć w boksach, które mają jeszcze nie wczytano żadnych treści (ze względu na disableInitialLoad()) lub w celu zastąpienia zawartość wypełnionego już boksu. Jednak tylko te przedziały, które zostały zarejestrowanych przy użyciu wywołania display() mogą zostać odświeżone.

<!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 powyższym 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ę przedziały do metody refresh(). Przeczytaj artykuł Odświeżanie boksów reklamowych. .

Sprawdzone metody

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

  1. Nie odświeżaj 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ń bez potrzeby do: clear()

    Podczas odświeżania boksu reklamowego nie należy wywoływać Najpierw PubAdsService.clear(). Jest to niepotrzebne, ponieważ refresh() zastępuje zawartość określonego boksu niezależnie od tego czy jakakolwiek treść reklamy została wcześniej wczytana. Dzwonię natychmiast pod numer clear() przed wywołaniem funkcji refresh() jedynie wydłuża czas pustego przedziału będą widoczne dla użytkownika.

  3. Odświeżaj tylko widoczne boksy reklamowe

    Użycie właściwości refresh() do zastąpienia zawartości boksów reklamowych, które nie są nigdy widoczne może znacznie obniżyć współczynnik Widoku aktywnego. Zdarzenie ImpressionViewableEvent może służyć do: określają, kiedy boks reklamowy staje się widoczny, tak jak w przykładzie poniżej.

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