סימניות

במדריך הזה מוסבר איך להטמיע סימניות באמצעות 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;
    }
  }
}

אפליקציה לדוגמה

אפליקציה לדוגמה