Reklam yüklemeyi denetleme ve yenileme

Başlangıç ve temel kavram örneklerimizde, Google Yayıncı Etiketi (GPT) kitaplığının display() yöntemi kullanılır bir reklam alanını kaydetmek ve görüntülemek için. Ancak reklam içeriğinin ne zaman yükleneceğini daha hassas bir şekilde kontrol etmek için bu işlemleri ayırmanın tercih edilebilir veya hatta gerekli olabileceği durumlar vardır. Örneğin, bir kurumda Kullanıcı rızası yönetim platformundan veya kullanıcının kendi kararıyla eyleme dökülebilir.

Bu kılavuzda, GPT tarafından kullanılan mekanizmaları keşfedeceğiz Reklam içeriğinin yüklenmesini kontrol etme ve istek üzerine yeni reklam içeriği getirme. Tam kod bu örnek için etkinliğe dayalı isteklerde bulunabilir. örnek sayfadır.

Reklam yüklemeyi kontrol etme

Varsayılan olarak display() yönteminin davranışı, reklam içeriğini bir reklam alanına kaydetmek, istemek ve oluşturmaktır. Reklam içeriğinin otomatik olarak istenmesi ve oluşturulması, PubAdsService.disableInitialLoad() yöntemi kullanılarak devre dışı bırakılabilir.

İlk yükleme devre dışıyken display() çağrıları yalnızca reklam alanını kaydeder. İkinci bir işlem yapılmadan reklam içeriği yüklenmez. Bu sayede, reklam isteklerinin ne zaman yapılacağını tam olarak kontrol edebilirsiniz.

Yanlışlıkla reklam isteğinde bulunmamak için disableInitialLoad() çağrılmalıdır ve display() çağrılır.

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

Bu örnekte, ilk yükleme devre dışı bırakılarak display() çağrıldığında reklam isteği gönderilmez ve reklam içeriği oluşturulmaz. Alan, reklam kabul etmeye ve göstermeye hazırdır ancak alan yenilenene kadar reklam isteği gönderilmez.

Yenile

PubAdsService.refresh() yöntemi, bir veya daha fazla alanı yeni reklam içeriğiyle doldurmak için kullanılır. Bu yöntem, henüz yüklememiş (disableInitialLoad() nedeniyle) veya içeriğini kontrol edebilirsiniz. Ancak yalnızca display() çağrısı yapılarak kaydedilen aralıklar yenilenebilir.

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

Bu değiştirilmiş örnekte, bir kullanıcı "Reklamı Göster/Yenile"yi tıkladığında düğmesi, refresh() yöntemi çağrılır. Bu işlem, yeni reklam içeriği getirme isteğini tetikler mevcut içeriğin üzerine yazarak bunu kayıtlı alana yükleyin.

Önceki örnekte refresh() yönteminin parametre olmadan çağrıldığını ve bunun da kayıtlı tüm reklam alanlarını yenilediğini unutmayın. Ancak refresh() yöntemine bir alan dizisi ileterek belirli reklam alanlarını yenilemek de mümkündür. Bununla ilgili bir örnek için Reklam alanlarını yenileme örneğine bakın.

En iyi uygulamalar

refresh() ile çalışırken uyulması gereken bazı en iyi uygulamalar vardır.

  1. Sayfayı çok hızlı yenilemeyin.

    Reklam alanlarının çok hızlı yenilenmesi, reklam isteklerinizin kısıtlanmasına neden olabilir. Bunu önlemek için, slotları 30 saniyeden daha sık yenilemeyin.

  2. clear() numaralı telefonu gereksiz yere aramayın

    Bir reklam alanını yenilerken şunları yapmayın: Önce PubAdsService.clear(). Bu gerekli değildir refresh(), şundan bağımsız olarak belirtilen alanın içeriğini değiştirir: herhangi bir reklam içeriğinin yüklenip yüklenmediği refresh()'u aramadan hemen önce clear()'ü aramak, boş bir yuvanın kullanıcı tarafından görülebildiği süreyi artırır.

  3. Yalnızca görüntülenebilir reklam alanlarını yenile

    Hiçbir zaman görüntülenemeyen reklam alanlarının içeriğini değiştirmek için refresh() kullanma Aktif Görüntüleme oranınızı önemli ölçüde düşürebilir. ImpressionViewableEvent, bir reklam alanının ne zaman görüntülenebilir hale geldiğini belirlemek için kullanılabilir. Aşağıdaki örnekte bu durum gösterilmektedir:

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