כבעלי תוכן וידאו, כדאי לכם למנוע מהצופים לדלג על מודעות באמצע הסרטון (mid-roll). כשמשתמש לוחץ ועובר את ההפסקה למודעות, אפשר להחזיר אותם לתחילת ההפסקה למודעות, ואז לחזור אותם למיקום שבו הם מחפשים אחרי שההפסקה למודעות תסתיים. הזה נקראת 'הקפאה'.
כדוגמה, ראו את התרשים הבא. הצופה שלך צופה בסרטון ומחליטה להריץ את נקודת הזמן של 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
, בודקים אם המודעה הקודמת
ההפסקה הופעלה כתוצאה מהצמדה (Snapback). אם כן, מחזירים את
את המשתמש למקום שהוא ניסה לחפש בהתחלה (כל עוד
כי זה לא היה באמצע ההפסקה למודעה שעכשיו שיחקת):
player.adBreakEnded = Function(adBreakInfo as Object)
If m.isSnapback
m.seek(m.timeAfterSnapback * 1000)
m.isSnapback = False
End If
End Function