التحكم في تحميل الإعلان وتحديثه

في أمثلة البدء والمفاهيم الأساسية، علامة "ناشر Google" يتم استخدام الطريقة display() لمكتبة (GPT) لتسجيل شريحة إعلانية وعرضها ومع ذلك، هناك أوقات قد لا فضلًا أو حتى ضرورية لفصل هذه الإجراءات، للحصول على التحكم بدقة في وقت تحميل محتوى الإعلان. على سبيل المثال، عند العمل مع منصّة إدارة الموافقة أو طلب محتوى إعلاني نتيجة بحث عن مستخدم اتخاذ القرار.

سوف نستكشف في هذا الدليل الآليات التي يوفرها GPT التحكم في تحميل محتوى الإعلان وجلب محتوى إعلان جديد عند الطلب. الرمز الكامل يمكن العثور على هذا المثال في الطلبات المستندة إلى الأحداث نموذج صفحة.

التحكّم في تحميل الإعلانات

وفقًا للإعدادات التلقائية، يكون سلوك طريقة 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");
      });
    </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() لاستبدال محتوى الخانات الإعلانية غير القابلة للعرض أبدًا إلى خفض نسبة العرض النشط بشكل كبير. يمكن استخدام الحدث 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();
    });