広告の読み込みと更新を制御する

基本的なコンセプトの例として Google パブリッシャー タグ (GPT)ライブラリの display() メソッドが使用されている スロットを登録して表示できます。ただし、 分離するために好ましい、あるいは必要であるとしても、 広告コンテンツを読み込むタイミングをきめ細かく制御できる。たとえば、 ユーザーに応じて広告コンテンツをリクエストしたり できます。

このガイドでは、Google Chat で実行できる GPT の 広告コンテンツの読み込みを制御し、新しい広告コンテンツをオンデマンドで取得する。完全なコード この例については、イベントベースのリクエストをご覧ください。 サンプルページを参照してください。

広告の読み込みを管理する

デフォルトでは、display() メソッドの動作は次のようになります。 広告スロットで広告コンテンツの登録、リクエスト、レンダリングを行う。自動 広告コンテンツのリクエストとレンダリングは、 PubAdsService.disableInitialLoad() メソッドを使用します。

初期読み込みを無効にした場合、display() の呼び出しでは広告スロットのみが登録されます。 2 つ目の操作が行われるまで、広告コンテンツは読み込まれません。これにより、 広告リクエストが送信されるタイミングをきめ細かく制御できる。

意図しない広告リクエストを避けるため、disableInitialLoad() を呼び出す必要があります サービスを有効にする前と display() を呼び出す前に、この ID を作成する必要があります。

<!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() が原因で)、または 自動的に挿入されます。ただし Chronicle SOAR が 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 に 1 回より頻繁に更新しないようにします。 秒です。

  2. clear() を不必要に呼び出さない

    広告スロットを更新する際に、 PubAdsService.clear()。これは、 refresh() は、指定の有無にかかわらず、指定されたスロットのコンテンツを置き換えます。 以前に読み込まれた広告コンテンツがあるかどうか。すぐに clear() に発信しています refresh() を呼び出す前に、空白スロットがある時間を増やすだけです。 ユーザーに表示されます

  3. 視認範囲の広告スロットのみを更新

    refresh() を使用して、視認範囲外の広告スロットのコンテンツを置き換える アクティブビュー率が大幅に低下する可能性があります「 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();
    });