اسنپ ​​بک

به‌عنوان یک ناشر ویدیو، ممکن است بخواهید از جستجوی بینندگان خود در تبلیغات میان‌پول خود جلوگیری کنید. وقتی کاربر به دنبال وقفه تبلیغاتی است، می‌توانید او را به ابتدای آن وقفه تبلیغاتی برگردانید و پس از اتمام آن وقفه تبلیغاتی، او را به مکان جستجوی خود برگردانید. این ویژگی "snapback" نام دارد.

به عنوان مثال، نمودار زیر را ببینید. بیننده شما در حال تماشای یک ویدیو است و تصمیم می گیرد از نقطه 5 دقیقه تا 15 دقیقه را جستجو کند. با این حال، یک وقفه تبلیغاتی در حد 10 دقیقه وجود دارد که می‌خواهید قبل از اینکه بتوانند محتوا را بعد از آن تماشا کنند، آن را تماشا کنند:

برای نمایش این استراحت تبلیغاتی، مراحل زیر را انجام دهید:

  1. بررسی کنید که آیا کاربر جستجویی انجام داده است که از یک وقفه تبلیغاتی تماشا نشده عبور کرده است یا خیر، و اگر چنین است، او را به استراحت تبلیغاتی برگردانید.
  2. پس از اتمام وقفه تبلیغاتی، آنها را به جستجوی اصلی خود برگردانید.

در شکل نمودار، به شکل زیر است:

در اینجا نحوه پیاده سازی این گردش کار در Android IMA SDK، همانطور که در AdvancedExample انجام شده است، آمده است.

جلوگیری از بی توجهی یک وقفه تبلیغاتی به دنبال

بررسی کنید که آیا کاربر جستجویی را انجام داده است که از یک وقفه تبلیغاتی تماشا نشده گذشته است یا خیر، و اگر چنین است، او را به وقفه تبلیغاتی برگردانید. در Android SDK، از شی PlayerControl برای تشخیص جستجو استفاده کنید. هنگامی که کاربر جستجو می کند، متد onSeek() از SampleHlsVideoPlayerCallback که توسط SampleAdsWrapper پیاده سازی شده است را راه اندازی کنید. این روش (در زیر ارائه شده است) نقطه نشانه را قبل از زمان جستجوی کاربر بررسی می کند. اگر پخش نشد، به جای نقطه جستجوی اولیه مورد نظر، به ابتدای آن استراحت تبلیغاتی بگردید و آن نقطه جستجوی مورد نظر را در 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 تنظیم شده است یا خیر. اگر چنین است، کاربر را به آن نقطه از جریان ببرید، زیرا وقفه تبلیغاتی که او به تازگی تماشا کرده است، نتیجه snapback بوده است:

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