स्नैपबैक

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

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

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

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

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

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

वीडियो में आगे/पीछे जाने की सुविधा इस्तेमाल न करें, ताकि कोई विज्ञापन न देखा जा सके

देखें कि क्या उपयोगकर्ता ने वीडियो में आगे/पीछे जाने की कार्रवाई की है, जो विज्ञापन के लिए नहीं देखे गए ब्रेक से आगे निकल चुकी है, और अगर ऐसा है, तो उन्हें विज्ञापन के लिए ब्रेक पर वापस ले जाएं. वीडियो पर आगे/पीछे जाने की सुविधा का पता लगाने के लिए, Android SDK टूल में PlayerControl ऑब्जेक्ट का इस्तेमाल करें. जब उपयोगकर्ता इसे ढूंढता है, तो onSeek() तरीके को SampleAdsWrapper ने SampleHlsVideoPlayerCallback को लागू किया. यह तरीका (नीचे बताया गया है) उपयोगकर्ता के कन्वर्ज़न से पहले क्यू पॉइंट की जांच करता है सीक टाइम. अगर विज्ञापन चलता नहीं है, तो उस विज्ञापन ब्रेक की शुरुआत तक जाएं और उस लक्ष्य को सेव कर लें जिसमें snapBackTime में पॉइंट.

@Override
public void onSeek(int timeMillis) {
  double timeToSeek = timeMillis;
  if (streamManager != null) {
    CuePoint cuePoint =
        streamManager.getPreviousCuePointForStreamTime(timeMillis / 1000);
    if (cuePoint != null && !cuePoint.isPlayed()) {
      snapBackTime = timeToSeek / 1000.0; // Update snapback time.
      // Missed cue point, so snap back to the beginning of cue point.
      timeToSeek = cuePoint.getStartTime() * 1000;
      videoPlayer.seek(Math.round(timeToSeek));
      videoPlayer.setCanSeek(false);
      return;
    }
  }
  videoPlayer.seek(Math.round(timeToSeek));
}

उपयोगकर्ता को उसके मूल वीडियो पर वापस ले जाएं

अब onAdBreakEnded में होने वाला इवेंट होने पर, यह देख लें कि snapBackTime सेट है. अगर ऐसा है, तो उपयोगकर्ता को स्ट्रीम में उस पॉइंट पर ले जाएं, क्योंकि विज्ञापन स्नैपबैक का नतीजा था कि उन्होंने अभी जो ब्रेक देखा वह स्नैपबैक का नतीजा था:

@Override
public void onAdBreakEnded() {
  // Re-enable player controls.
  videoPlayer.setCanSeek(true);
  videoPlayer.enableControls(true);
  if (snapBackTime > 0) {
    videoPlayer.seek(Math.round(snapBackTime * 1000));
  }
  snapBackTime = 0;
}