स्नैपबैक

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

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

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

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

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

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

वीडियो में आगे या पीछे जाने पर, विज्ञापन के लिए रोके गए हिस्से को न छोड़ना

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

- (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;
    }
  }
}