Reklam yüklemeyi denetleme ve yenileme

Başlangıç ve temel kavram örneklerimizde, bir reklam alanını kaydetmek ve görüntülemek için Google Yayıncı Etiketi (GPT) kitaplığının display() yöntemi kullanılmaktadır. Bununla birlikte, reklam içeriğinin ne zaman yükleneceğini daha hassas bir şekilde kontrol etmek için bu işlemlerin birbirinden ayrılması tercih edilebilir ve hatta gerekli olabilir. Örneğin, bir kullanıcı rızası yönetim platformuyla çalışırken veya bir kullanıcı işlemi sonucunda reklam içeriğini talep ederken.

Bu kılavuzda, reklam içeriğinin yüklenmesini kontrol etmek ve yeni reklam içeriğini isteğe bağlı olarak getirmek için GPT tarafından sağlanan mekanizmaları keşfedeceğiz. Bu örneğin tam kodu etkinlik tabanlı istekler örnek sayfasında bulunabilir.

Reklam yüklemeyi kontrol etme

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

İlk yükleme devre dışıyken, display() işlevine yapılan aramalar yalnızca reklam alanını kaydeder. İkinci bir işlem yapılana kadar reklam içeriği yüklenmez. Bu, reklam isteklerinin ne zaman yapılacağını hassas bir şekilde kontrol etmenize olanak tanır.

Kasıtlı reklam isteklerinde bulunulmaması için disableInitialLoad() hizmeti etkinleştirilmeden ve display() çağrılmadan önce çağrılmalıdı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"></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>

Bu örnekte, display() çağrıldığında hiçbir reklam isteği yapılmamasını ve reklam içeriği oluşturulmamasını sağlamak amacıyla ilk yükleme devre dışı bırakılmıştır. Alan bir reklamı kabul etmeye ve göstermeye hazırdır ancak alan yenilenene kadar reklam isteğinde bulunulmaz.

Yenile

PubAdsService.refresh() yöntemi, bir alanı veya alanları yeni reklam içeriğiyle doldurmak için kullanılır. Bu yöntem, henüz içerik yüklememiş (disableInitialLoad() nedeniyle) veya önceden doldurulmuş bir alanın içeriğini değiştirmek için kullanılabilen alanlarda kullanılabilir. Ancak yalnızca display() çağrılıp kaydedilen alanlar 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"></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, kullanıcı "Reklamı Göster/Yenile" düğmesini tıkladığında refresh() yöntemi çağrılır. Bu, mevcut reklam içeriğinin üzerine yazarak yeni reklam içeriği getirme ve kayıtlı alana yükleme isteği tetikler.

Yukarıdaki örnekte, refresh() yönteminin hiçbir parametre olmadan çağrıldığını ve tüm kayıtlı reklam alanlarının yenileneceğini unutmayın. Bununla birlikte, refresh() yöntemine bir dizi dizi ileterek belirli reklam alanlarını yenilemek de mümkündür. Bunun bir örneği 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. Çok hızlı yenilemeyin.

    Reklam alanlarının çok hızlı yenilenmesi, reklam isteklerinizin kısıtlanmasına neden olabilir. Bu durumu önlemek için slotları 30 saniyede bir daha sık yenilemekten kaçının.

  2. clear() adlı kişiyi gereksiz yere arama

    Bir reklam alanını yenilerken önce PubAdsService.clear() işlevini çağırmayın. Reklam içeriğinin daha önce yüklenip yüklenmediğinden bağımsız olarak refresh(), belirtilen alanın içeriklerini değiştirir. Bu nedenle gereksizdir. refresh() çağırmadan hemen önce clear() çağırmak, yalnızca boş bir alanın kullanıcılara gösterilme süresini 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() kullanılması Aktif Görüntüleme oranınızı önemli ölçüde düşürebilir. Aşağıdaki örnekte olduğu gibi, bir reklam alanının ne zaman görüntülenebilir olduğunu belirlemek için ImpressionViewableEvent kullanılabilir.

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