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

शुरुआत करने और बुनियादी कॉन्सेप्ट के उदाहरणों में, विज्ञापन स्लॉट को रजिस्टर और दिखाने के लिए, 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");
      });
    </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();
    });