विज्ञापन लोड होने की प्रोसेस और रीफ़्रेश होने को कंट्रोल करना

हमारे शुरुआती और बुनियादी कॉन्सेप्ट से जुड़े उदाहरणों में, Google पब्लिशर टैग (GPT) लाइब्रेरी के display() तरीके का इस्तेमाल किया गया है किसी विज्ञापन स्लॉट को रजिस्टर करने और उसे दिखाने के लिए. हालांकि, कई बार ऐसा होता है कि इन कार्रवाइयों को अलग करने के लिए प्राथमिकता दी जाती हो या ज़रूरत भी हो, ताकि यह कंट्रोल कर सकते हैं कि विज्ञापन का कॉन्टेंट कब लोड होगा. उदाहरण के लिए, किसी सहमति मैनेजमेंट प्लैटफ़ॉर्म या उपयोगकर्ता से मिले विज्ञापन के कॉन्टेंट का अनुरोध करना कार्रवाई.

इस गाइड में हम ऐसे तरीकों के बारे में जानेंगे जिन्हें 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() का इस्तेमाल किया जा रहा है आपके ActiveView की दर को काफ़ी कम कर सकता है. कॉन्टेंट बनाने 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();
    });