ביטול

כבעל אתר של וידאו, ייתכן שתרצה למנוע מהצופים שלך לעבור את המודעות שלך באמצע הסרטון. כשהמשתמש מדלג להפסקה למודעות, אפשר להחזיר אותו לתחילת ההפסקה למודעה, ולחזור למיקום הרצוי בסיום ההפסקה למודעה. התכונה הזו נקראת 'snapback'.

לדוגמה, אפשר לעיין בתרשים הבא. הצופה שלך צופה בסרטון, ומחליט לדלג מסמן של 5 דקות ל-15 דקות. עם זאת, יש הפסקה למודעה בסיום 10 הדקות שבהן אתם רוצים שהם יצפו לפני שיוכלו לצפות בתוכן שאחריה:

כדי להציג את ההפסקה הזו למודעות, יש לפעול לפי השלבים הבאים:

  1. בדקו אם המשתמש הפעיל הרצה שחרגה מההפסקה למודעות שלא נצפתה, ואם כן, מחזירים אותו להפסקה למודעות.
  2. לאחר השלמת ההפסקה למודעה, מחזירים את המשתמשים לשאילתת החיפוש המקורית.

בדיאגרמה, הנתונים ייראו כך:

כך מטמיעים את תהליך העבודה ב-HTML5 IMA SDK, כפי שמוסבר בדוגמה המתקדמת.

מניעת הצגה של הפסקה למודעה ללא צפייה

עליכם לבדוק אם המשתמש הפעיל הרצה מעבר להפסקה למודעות שלא נצפה, ואם כן, להחזיר אותו להפסקה למודעות. ב-HTML5 SDK, מגדירים event listener באירוע seeked של נגן התוכן כדי להפעיל את onSeekEnd(). השיטה הזו (שמוצגת בהמשך) בודקת את נקודת הרמז לפני זמן החיפוש של המשתמש. אם לא מפעילים אותה, נסו להתחיל את ההפסקה למודעה במקום את נקודת ההרצה הרצויה ולשמור את נקודת החיפוש הרצויה ב-snapForwardTime.

function onSeekEnd() {
  if (isLiveStream) { return; }
  if (isSnapback) {
    isSnapback = false;
    return;
  }
  var currentTime = videoElement.currentTime;
  var previousCuePoint =
      streamManager.previousCuePointForStreamTime(currentTime);
  if (previousCuePoint && !previousCuePoint.played) {
    isSnapback = true;
    snapForwardTime = currentTime;
    videoElement.currentTime = previousCuePoint.start;
}

החזרת המשתמש לדילוג המקורי שלו

עכשיו, כשתקבל אירוע AD_BREAK_ENDED, בדוק אם snapForwardTime מוגדר. אם כן, העבירו את המשתמש לנקודה הזו בזרם, כי ההפסקות למודעות שהוא צפה בהן עכשיו נבעו מחזרה לאחור:

function onAdBreakEnded(e) {
  videoElement.controls = true;
  clickElement.style.display = 'none';
  adUiDiv.style.display = 'none';
  if (snapForwardTime && snapForwardTime > videoElement.currentTime) {
    videoElement.currentTime = snapForwardTime;
    snapForwardTime = null;
  }
}