광고 로드 관리 및 새로고침

시작하기 및 기본 개념 예에서 Google 게시자 태그는 (GPT) 라이브러리의 display() 메서드가 사용됨 광고 슬롯을 등록하고 표시할 수 있습니다. 그러나 더 많은 리소스를 확보하기 위해 이러한 작업을 분리하는 것이 좋거나 광고 콘텐츠가 로드되는 시점을 정확하게 제어할 수 있습니다 예를 들어, 동의 관리 플랫폼 또는 사용자의 결과로 광고 콘텐츠를 요청 있습니다.

이 가이드에서는 광고 콘텐츠의 로드를 제어하고 주문형으로 새 광고 콘텐츠를 가져올 수 있습니다. 전체 코드 이 예의 경우 이벤트 기반 요청에서 확인할 수 있습니다. 샘플 페이지로 이동합니다.

광고 로드 제어

기본적으로 display() 메서드의 동작은 다음과 같습니다. 광고 콘텐츠를 등록, 요청 및 렌더링합니다. 자동 광고 콘텐츠 요청 및 렌더링을 비활성화하려면 PubAdsService.disableInitialLoad() 메서드를 사용하여 지도 가장자리에 패딩을 추가할 수 있습니다.

초기 로드가 사용 중지되면 display()를 호출하면 광고 슬롯만 등록됩니다. 두 번째 작업이 실행될 때까지 광고 콘텐츠가 로드되지 않습니다. 이렇게 하면 광고 요청이 이루어지는 시기를 정확하게 제어할 수 있습니다.

의도하지 않은 광고 요청을 방지하려면 disableInitialLoad()를 호출해야 합니다. 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>

이 예에서는 광고 요청이 발생하지 않도록 초기 로드가 중지됩니다. display()가 호출될 때 광고 콘텐츠가 렌더링되지 않습니다. 슬롯이 준비되었습니다. 광고를 수락하고 표시하지만 슬롯이 새로고침합니다

새로고침

PubAdsService.refresh() 메서드는 새 광고 콘텐츠가 있는 슬롯입니다. 이 메서드는 disableInitialLoad()로 인해 콘텐츠를 로드하지 않았거나 확인할 수 있습니다. 하지만 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>

이 수정된 예에서 사용자가 '광고 표시/새로고침'을 클릭하면 버튼, refresh() 메서드가 호출됩니다. 이렇게 하면 새 광고 콘텐츠를 가져오는 요청이 트리거됩니다. 등록된 슬롯에 로드하여 기존 콘텐츠를 덮어씁니다.

위의 예에서 refresh() 메서드는 매개변수를 사용하며, 이는 등록된 모든 광고 슬롯을 새로고침하는 효과가 있습니다. 그러나 슬롯을 refresh() 메서드에 추가합니다. 자세한 내용은 광고 슬롯 새로고침 샘플을 참조하세요

권장사항

refresh()를 사용할 때 따라야 할 몇 가지 권장사항이 있습니다. 을 준수해야 합니다.

  1. 너무 빨리 새로고침하지 마세요.

    광고 슬롯을 너무 빨리 새로고침하면 광고 요청이 제한될 수 있습니다. 이를 방지하려면 슬롯을 30초마다 한 번 이상 새로고침하지 마세요. 초입니다.

  2. 불필요하게 clear()를 호출하지 않음

    광고 슬롯을 새로고침할 때 먼저 PubAdsService.clear(). 이 작업은 필요하지 않습니다. refresh()는 슬롯 크기와 상관없이 지정된 슬롯의 콘텐츠를 광고 콘텐츠가 이전에 로드된 적이 있는지 여부 즉시 clear()에 전화 를 호출하기 전에 refresh()을 사용하면 빈 슬롯의 시간만 늘어납니다. 사용자에게 표시됩니다.

  3. 조회 가능한 광고 슬롯만 새로고침

    refresh()를 사용하여 볼 수 없는 광고 슬롯의 콘텐츠 대체 ActiveView 비율을 크게 낮출 수 있습니다 이 ImpressionViewableEvent는 다음과 같은 용도로 사용할 수 있습니다. 광고 슬롯이 조회 가능한 상태가 되는 시점을 파악할 수 있습니다.

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