विज्ञापन के नियम

IMA HTML5 SDK टूल, विज्ञापन प्लेलिस्ट के पूरी तरह से अपने-आप काम करता है. यह सुविधा वीडियो में, बताए गए तरीके से विज्ञापन के लिए ब्रेक डालें Google Ad Manager ट्रैफ़िक बढ़ाने के सबसे सही तरीके हैं. यह वीडियो प्लेयर कोड को भी काफ़ी आसान बनाता है विज्ञापन के लिए ब्रेक की सुविधा देना ज़रूरी है. इसमें वीडियो शुरू होने से पहले, वीडियो के बीच में, और वीडियो खत्म होने के बाद दिखने वाले विज्ञापन शामिल हैं.

  • AdsManager बनाते समय, contentPlayback ऑब्जेक्ट को getAdsManager से पास किया जाता है कॉल. इस ऑब्जेक्ट को इसमें currentTime प्रॉपर्टी होनी चाहिए, जो मौजूदा प्लेहेड दिखाती हो वीडियो की पोज़िशन. अगर HTML5 video एलिमेंट का इस्तेमाल किया जा रहा है, तो बस आपका कॉन्टेंट दिखाने के लिए, आप उस एलिमेंट को SDK में पास कर सकते हैं. यह ऑब्जेक्ट का इस्तेमाल वीडियो की स्थिति को ट्रैक करने के लिए किया जाता है. इससे विज्ञापन के लिए ब्रेक विज्ञापन मैनेजर में तय समय पर अपने-आप डाला जाएगा. आपको यह भी अनुमति देनी होगी SDK टूल को पता है कि आपको अपनी ओर से कॉन्टेंट की स्थिति को मैनेज करना है.
    var adsRenderingSettings = new google.ima.AdsRenderingSettings();
    adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true;
    adsManager = adsManagerLoadedEvent.getAdsManager(
        videoContent, adsRenderingSettings); // See API reference for
        
        contentPlayback.
    
  • वीडियो खत्म होने के बाद दिखने वाले विज्ञापन पक्का करने के लिए, आपको SDK टूल को यह बताना होगा कि आपका कॉन्टेंट खत्म हो जाता है. यह थोड़ा मुश्किल है, क्योंकि कुछ मामलों में SDK टूल आपके वीडियो का इस्तेमाल प्लेयर को विज्ञापन चलाने के लिए कहें, ताकि आपको यह पक्का करना पड़े कि आप SDK को कब आपकी सामग्री खत्म हो जाती है, लेकिन विज्ञापन खत्म होने के बाद नहीं. ऐसा करने के लिए कोड यहां दिया गया है:
    var videoContent = document.getElementById('contentElement');
    var contentEndedListener = function() {adsLoader.contentComplete();};
    
    videoContent.addEventListener('ended', contentEndedListener);
    
    function onContentPauseRequested() {
      contentElement.removeEventListener('ended', contentEndedListener);
      ...
    }
    
    function onContentResumeRequested() {
      contentElement.addEventListener('ended', contentEndedListener);
      ...
    }
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • CONTENT_PAUSE_REQUESTED और CONTENT_RESUME_REQUESTED इवेंट का इस्तेमाल, विज्ञापन के लिए ब्रेक होने पर वीडियो को रोकने और फिर से शुरू करने के लिए किया जाता है.
  • अगर आपका वीडियो प्लेयर, 'खींचें और छोड़ें' सुविधा और मौजूदा समय की प्रॉपर्टी वीडियो प्लेयर को खींचकर छोड़ने के दौरान, वीडियो प्लेयर अपडेट हो जाता है, लेकिन SDK टूल फ़र्क़ नहीं कर पाता के बीच होता है. आपको getAdsManager के पैरामीटर के तौर पर, कस्टम contentPLAY ऑब्जेक्ट का इस्तेमाल करना होगा. इस्तेमाल के इस उदाहरण के उदाहरण के लिए, वीडियो ढूंढने में समस्या देखें.

ध्यान दें: कॉन्टेंट चलने के बाद या उपयोगकर्ता ने वीडियो चलाना बंद कर दिया है, तो AdsLoader.contentComplete को ज़रूर कॉल करें ताकि SDK टूल को यह बताया जा सके कि कॉन्टेंट पूरा हो गया है. इसके बाद, SDK टूल चालू हो जाता है पोस्ट-रोल विज्ञापन ब्रेक, अगर शेड्यूल किया गया है. ALL_ADS_COMPLETED इवेंट तब शुरू होता है, जब विज्ञापन के लिए सभी जगह ब्रेक हो जाते हैं. साथ ही, ध्यान दें कि कॉन्टेंट ट्रैकिंग तब शुरू होती है, जब init() को कॉल किया जाता है. कॉन्टेंट चलाने से पहले, हमेशा init() को कॉल करें.

विज्ञापन के लिए ब्रेक अपने-आप चलने की सुविधा बंद करना

कुछ मामलों में हो सकता है कि आप SDK टूल को तो आप उनके लिए तैयार हैं. ऐसे मामले में, विज्ञापन के लिए ब्रेक अपने-आप चलने की सुविधा को बंद किया जा सकता है विज्ञापन के लिए ब्रेक लेने का समय उपलब्ध होने पर, SDK टूल को इसकी सूचना दी जा सकती है. इसके साथ कॉन्फ़िगरेशन के तहत, जब SDK टूल विज्ञापन के लिए ब्रेक लोड करता है, तो यह AD_BREAK_READY इवेंट. जब आपका प्लेयर, विज्ञापन के लिए ब्रेक शुरू करने के लिए तैयार हो, adsManager.start() को कॉल किया जा सकता है:

function requestAds() {}
  ...
  adsLoader.getSettings().setAutoPlayAdBreaks(false);
  ...
}

function onAdsManagerLoaded() {
  ...
  // For non-auto ad breaks, listen for ad break ready
  adsManager.addEventListener(
      google.ima.AdEvent.Type.AD_BREAK_READY,
      adBreakReadyHandler);
  ...
}

function adBreakReadyHandler() {
  // Once we're ready to play ads. To skip this ad break, simply return
  // from this handler without calling adsManager.start().
  adsManager.start();
}

इसे आज़माएं

आप नीचे इसका काम करने का तरीका देख सकते हैं.

वीडियो में आगे/पीछे जाने में समस्या

विज्ञापन के नियमों का इस्तेमाल करने पर, आपको क्लिक करके खींचने और छोड़ने की सुविधा में समस्या हो सकती है. खास तौर पर, जब कोई उपयोगकर्ता वीडियो के पिछले हिस्से पर जाने के लिए क्लिक करता है और उसे खींचकर छोड़ देता है वीडियो के बीच में विज्ञापन दिखाने वाले पॉड, कॉन्टेंट फिर से शुरू हो जाता है. ऐसा वीडियो प्लेहेड का समय अपडेट होने की वजह से होता है, जो व्यक्ति खोज रहा है; अगर SDK टूल की मदद से मौजूदा समय के लिए पोल किया जाता है, जबकि उपयोगकर्ता जो किसी विज्ञापन को देखता है, तो हो सकता है कि उसे लगे कि उस विज्ञापन को चलाया जाना चाहिए. जब कॉन्टेंट फिर से शुरू करता है, तो वह उस विज्ञापन को चलाता है और फिर सीक के बाद से सबसे हाल का विज्ञापन. इस सवाल को विज़ुअल तौर पर दिखाने के लिए, नीचे दिया गया डायग्राम देखें:

इसे हल करने का आसान तरीका यह है कि उपयोगकर्ता के शुरू होने का मौजूदा समय बचाया जा सकता है और उस समय की रिपोर्ट करें, जब SDK टूल इसके लिए तब कहता है, जब तक उपयोगकर्ता सामान्य प्लेबैक को फिर से शुरू कर देता है. इस समाधान की विज़ुअल झलक के लिए, देखें नीचे दिया गया डायग्राम देखें:

इस तरीके से, लाइव स्ट्रीम के बीच में 0:10 सेकंड का विज्ञापन ही दिखाया जा सकता है और सिर्फ़ 0:20 मिनट का विज्ञापन चलाया जा सकता है. इसके लिए, कस्टम प्लेहेड ट्रैकर का इस्तेमाल किया जाता है, जैसा कि नीचे बताया गया है. नीचे दिया गया कोड बेहतर HTML5 में ads.js के संशोधन (बोल्ड में दिखाया गया है) शामिल हैं हमारा सैंपल डाउनलोड पेज पर क्लिक करें.

var Ads = function(application, videoPlayer) {
  ...
  this.currentTime = 0;
  setInterval(this.updateCurrentTime, 1000);
};

Ads.prototype.updateCurrentTime = function() {
  if (!this.videoPlayer_.contentPlayer.seeking) {
    this.currentTime = this.videoPlayer_.contentPlayer.currentTime;
  }
};

Ads.prototype.onAdsManagerLoaded_ = function(adsManagerLoadedEvent) {
  this.application_.log('Ads loaded.');
  this.adsManager_ = adsManagerLoadedEvent.getAdsManager(this);
  this.processAdsManager_(this.adsManager_);
};

मोबाइल Safari की ज्ञात समस्याएं

यह तरीका, मोबाइल Safari को छोड़कर बाकी सभी प्लैटफ़ॉर्म पर काम करना चाहिए. मोबाइल पर Safari, वीडियो टैग की खोज संबंधी प्रॉपर्टी ठीक से लागू नहीं की गई है (यह हमेशा 'गलत' दिखाता है). इससे बचने के लिए आपको खुद जांच करनी होगी यह देखें कि क्या उपयोगकर्ता वीडियो को आगे-पीछे करना चाहता है. इस तरीके के लिए सैंपल कोड अनुसरण करता है. नीचे दी गई बोल्ड लाइनें एक बार फिर मौजूदा कोड में किए गए बदलावों को दिखाती हैं.

var Ads = function(application, videoPlayer) {
  ...
  this.currentTime = 0;
  setInterval(this.updateCurrentTime, 1000);
  this.seeking = false;
  this.seekCheckInterval = 1000;
  // You may need to adjust this value, depending on your platform
  this.seekThreshold = 100;
  this.previousTime = 0;
  setInterval(
      Application.bind(this, this.checkForSeeking),
      this.seekCheckInterval);
};

Ads.prototype.updateCurrentTime = function() {
  if (!this.seeking) {
    this.currentTime = this.videoPlayer_.contentPlayer.currentTime;
  }
};

Ads.prototype.checkForSeeking = function() {
  var currentTime = this.videoPlayer_.contentPlayer.currentTime;
  // How much time has passed since you last ran this method, in milliseconds
  var diff = (currentTime - this.previousTime) * 1000;
  // If that difference is greater than the time since you last ran this method,
  // plus the threshold, the user was seeking
  if (Math.abs(diff)  > this.interval + this.threshold) {
    this.seeking = true;
  } else {
    this.seeking = false;
  }
  // Grab the current video time again to make up for time spent in this method
  previousTime = this.videoPlayer_.contentPlayer.currentTime;
};

Ads.prototype.onAdsManagerLoaded_ = function(adsManagerLoadedEvent) {
  this.application_.log('Ads loaded.');
  this.adsManager_ = adsManagerLoadedEvent.getAdsManager(this);
  this.processAdsManager_(this.adsManager_);
};

इन बदलावों के साथ, SDK टूल अब आपके Ads की मौजूदा समय की प्रॉपर्टी का इस्तेमाल कर रहा है ऑब्जेक्ट है जो यह तय करता है कि विज्ञापन के लिए ब्रेक कब चलाना है, न कि currentTime कॉन्टेंट वीडियो प्लेयर.