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

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

כך מטמיעים את snapback באמצעות IMA DAI SDK, כמו שמוצג בדוגמה המתקדמת שלנו.
איך מונעים מדילוג על הפסקה למודעה מבלי שהיא נצפית
בודקים אם המשתמש דילג על הפסקה למודעה שהוא לא צפה בה, ואם כן, מחזירים אותו להפסקה למודעה. הדוגמה המתקדמת של Roku מסתמכת על לחיצות על לחצנים בשלט כדי שהמשתמש יוכל להריץ קדימה – בכל פעם שהמשתמש לוחץ על הלחצן להרצה קדימה, הוא מדלג קדימה בסטרימינג במספר שניות מוגדר. אותה שיטה שמטפלת במעבר הזה בודקת גם אם המעבר לוקח אותם אל תוך הפסקה למודעה או מעבר לה, ואם כן, המשתמש מועבר להתחלה של הפסקה למודעה במקום:
Function handleFastForward(player as Object, streamManager as Object, updatedTime As Integer)
previousAd = streamManager.getPreviousCuePoint(updatedTime)
If previousAd = Invalid or previousAd.hasPlayed
player.seek(updatedTime * 1000)
Else If previousAd.start > player.currentTime
player.isSnapback = True
player.timeAfterSnapback = updatedTime
player.seek(previousAd.start * 1000 + 1000)
End If
End Function
החזרת המשתמש למיקום המקורי שלו בסרטון
ב-handler adBreakEnded, בודקים אם ההפסקה הקודמת לפרסומות הופעלה כתוצאה מהחזרה לנקודת ההתחלה. אם כן, צריך להחזיר את המשתמש למקום שאליו הוא ניסה להגיע מלכתחילה (כל עוד זה לא היה באמצע הפסקה למודעה שהסתיימה):
player.adBreakEnded = Function(adBreakInfo as Object)
If m.isSnapback
m.seek(m.timeAfterSnapback * 1000)
m.isSnapback = False
End If
End Function