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

في أمثلة البدء والمفاهيم الأساسية، علامة "ناشر 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");

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