स्नैपबैक

वीडियो पब्लिशर के तौर पर, हो सकता है कि आप चाहें, तो दर्शक वीडियो के बीच में दिखने वाले विज्ञापनों से विज्ञापन न देखें. जब कोई उपयोगकर्ता विज्ञापन के लिए ब्रेक की जगह देखता है, तो उसे विज्ञापन के लिए ब्रेक की शुरुआत में ले जाया जा सकता है. साथ ही, विज्ञापन के लिए ब्रेक की प्रोसेस पूरी होने के बाद, उसे खोजने की जगह पर वापस लाया जा सकता है. इस सुविधा को "स्नैपबैक" कहते हैं.

उदाहरण के तौर पर, नीचे दिया गया डायग्राम देखें. दर्शक कोई वीडियो देख रहा होता है और वह 5-मिनट से लेकर 15-मिनट के निशान तक वीडियो देखना चाहता है. हालांकि, 10 मिनट के अंदर एक विज्ञापन ब्रेक होता है, जिसे आप वीडियो के बाद देखने से पहले देखना चाहते हैं:

विज्ञापन के लिए यह ब्रेक दिखाने के लिए, यह तरीका अपनाएं:

  1. देखें कि क्या उपयोगकर्ता ने कोई ऐसी सीक चलाई है जो देखे गए विज्ञापन के लिए ब्रेक से आगे बढ़ गई है और अगर ऐसा है, तो उसे विज्ञापन के लिए ब्रेक पर वापस ले जाएं.
  2. विज्ञापन के लिए ब्रेक खत्म होने के बाद, वीडियो को उसके मूल वीडियो पर वापस ले जाएं.

डायग्राम के तौर पर, यह कुछ ऐसा दिखेगा:

जैसा कि AdvancedExample में बताया गया है, जैसा कि IMA डीएआई SDK टूल में इस वर्कफ़्लो को लागू करने का तरीका बताया गया है.

वीडियो में आगे/पीछे जाने की सुविधा को वीडियो के बीच में दिखने वाले विज्ञापन के लिए ब्रेक लेने से रोकें

देखें कि क्या उपयोगकर्ता ने कोई ऐसी खोज की है जो न देखे गए विज्ञापन ब्रेक के बाद भी हुई है. अगर ऐसा है, तो उन्हें विज्ञापन के लिए बने ब्रेक पर वापस ले जाएं. iOS के बेहतर वर्शन वाले उदाहरण के लिए, अपने यूज़र इंटरफ़ेस (यूआई) के साथ उपयोगकर्ता के इंटरैक्शन का इस्तेमाल करके, यह पता लगाएं कि उन्होंने सीक कब चलाया है. वीडियो को आगे-पीछे करने के दौरान, विज्ञापन के लिए कोई ब्रेक तो नहीं हुआ है जब उपयोगकर्ता वीडियो के कंट्रोल रिलीज़ करें, तो उनके मौजूदा समय की तुलना विज्ञापन के लिए सबसे हाल ही में होने वाले समय से करें. अगर विज्ञापन के लिए ब्रेक, वीडियो में आगे/पीछे जाने के समय के बाद पड़ता है (इसका मतलब है कि लोग वीडियो में आगे बढ़ गए हैं) और उसे अभी तक चलाया नहीं गया है, तो उन्हें विज्ञापन के लिए ब्रेक की शुरुआत में ले जाएं. साथ ही, अपने विज्ञापन ब्रेक के पूरा होने वाले हैंडलर में बाद में देखने के लिए एक स्नैपबैक फ़्लैग सेट करें:

- (IBAction)videoControlsTouchStarted:(id)sender {
  self.seekStartTime = self.contentPlayer.currentTime;
}

- (IBAction)videoControlsTouchEnded:(id)sender {
  self.seekEndTime = CMTimeMake(self.progressBar.value, 1);
  IMACuepoint *lastCuepoint =
      [self.streamManager previousCuepointForStreamTime:CMTimeGetSeconds(self.seekEndTime)];
  if (!lastCuepoint.played && (lastCuepoint.startTime > CMTimeGetSeconds(self.seekStartTime))) {
    self.snapbackMode = YES
    // Add 1 to the seek time to get the keyframe at the start of the ad to be your landing place.
    [self.contentPlayer seekToTime:CMTimeMakeWithSeconds(lastCuepoint.startTime + 1, NSEC_PER_SEC)];
  }
}

दर्शक को वीडियो के मूल हिस्से पर वापस ले जाएं

अपने ऐड-ब्रेक-एंड हैंडलर में यह देखें कि क्या पिछला ब्रेक स्नैपबैक की वजह से चलाया गया था. अगर ऐसा है, तो उपयोगकर्ता को उस जगह पर वापस ले जाएं जहां वे शुरुआत में खोज रहे थे (बशर्ते वह अभी-अभी चल रहे विज्ञापन ब्रेक के बीच में न हो):

- (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event {
  switch (event.type) {
    case kIMAAdEvent_AD_BREAK_ENDED: {
      if (self.snapbackMode) {
        self.snapbackMode = NO;
        if (CMTimeCompare(self.seekEndTime, self.contentPlayer.currentTime)) {
          [self.contentPlayer seekToTime:self.seekEndTime];
        }
      }
      break;
    }
  }
}