במדריך הזה מוסבר איך להטמיע סימון של מיקומים באמצעות IMA DAI SDK כשמשתמשים בהטמעה דינמית של מודעות (DAI) לשידורים של וידאו על פי דרישה (VOD). ההנחה היא שיש לכם הטמעה תקינה של IMA DAI, כמו זו שמוצגת במאמר תחילת העבודה.
מה זה הוספה לסימנייה?
סימנייה היא אפשרות לשמור נקודה ספציפית בתוכן ואז לחזור אליה. נניח שמשתמש צופה בחמש דקות של תוכן, יוצא משידור הווידאו ואז חוזר אליו. הוספה לסימנייה שומרת את המיקום של המשתמש בשידור, כך שהשידור יכול להמשיך מהמקום שבו הוא הפסיק, ולספק לצופים חוויה חלקה.
הוספת סימניות ב-DAI
כשמוסיפים לסימנייה סטרימינג של DAI, צריך לתעד את מזהה הסטרימינג ואת השעה שבה המשתמש יוצא מהסרטון. כשהמשתמש חוזר, צריך לשלוח שוב בקשה לסטרימינג ולחפש את השעה שנשמרה. מכיוון שלכל מופע של הסטרימינג המבוקש יכולים להיות הפסקות פרסום באורכים שונים, שמירת זמן הסטרימינג לא תעבוד. מה שאתם באמת רוצים לעשות זה להמשיך מאותו מיקום בתוכן.
שיטות המרה שיעזרו לכם
ערכת IMA DAI SDK מספקת זוג שיטות לבקשת זמן התוכן עבור זמן נתון בסטרימינג, וזמן בסטרימינג עבור זמן נתון בתוכן. באמצעות שיטות ההמרה האלה, אפשר לאחסן את השעה בתוכן שסומן בסימנייה, ואז לעבור אל השעה המתאימה בשידור במופע החדש של השידור. הנה הגישה, כולל קישור לאפליקציה לדוגמה שבה מוצגת הטמעה של סימון דפים במועדפים.
שמירת סימניות
שמירת סימנייה כשהפעילות מושהית.
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.contentPlayer pause];
// Ignore this if you're presenting a modal view (e.g. in-app clickthrough).
if ([self.navigationController.viewControllers indexOfObject:self] ==
NSNotFound) {
NSTimeInterval contentTime =
[self.streamManager contentTimeForStreamTime:CMTimeGetSeconds(
self.contentPlayer.currentTime)];
self.video.savedTime = contentTime;
...
}
}
הסימניות בטעינה
טוענים את הסימנייה כשמבקשים שוב להפעיל שידור. זהו חלק מההטמעה של ממשק VideoStreamPlayer
.
- (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event {
...
case kIMAAdEvent_STREAM_LOADED: {
if (self.video.savedTime > 0) {
NSTimeInterval streamTime =
[self.streamManager streamTimeForContentTime:self.video.savedTime];
[self.IMAVideoDisplay.playerItem
seekToTime:CMTimeMakeWithSeconds(streamTime, NSEC_PER_SEC)];
self.video.savedTime = 0;
}
}
}