Zakładki

Z tego przewodnika dowiesz się, jak wdrożyć dodawanie zakładek za pomocą pakietu IMA DAI SDK w przypadku korzystania z dynamicznego wstawiania reklam (DAI) w strumieniach wideo na żądanie (VOD). Zakładamy tutaj, że masz działającą implementację IMA DAI, taką jak ta przedstawiona w artykule Pierwsze kroki.

Co to jest tworzenie zakładek?

Zakładki to możliwość zapisania konkretnego miejsca w strumieniu treści, a potem powrót do niego. Załóżmy, że użytkownik ogląda pięć minut treści, opuszcza strumień wideo, a potem do niego wraca. Dodanie użytkownika do zakładek pozwala zapisać pozycję użytkownika w strumieniu, dzięki czemu może rozpocząć transmisję od miejsca, w którym została przerwana.

Tworzenie zakładek z dynamicznym wstawianiem reklam

Aby utworzyć zakładkę strumienia z dynamicznym wstawianiem reklam, musisz zarejestrować identyfikator strumienia i godzinę zamknięcia filmu przez użytkownika. Gdy użytkownik wróci, wyślij ponownie żądanie strumienia i sprawdź zaoszczędzony czas. W każdej instancji żądanego strumienia mogą występować przerwy na reklamę o różnej długości, więc oszczędność czasu transmisji nie będzie działać. Bardzo zależy Ci na tym, by kontynuować od tego samego czasu trwania.

Ratunkowe metody konwersji

Pakiet IMA DAI SDK udostępnia dwie metody żądania czasu treści dla danego czasu strumieniowego i czasu strumieniowania dla wybranego czasu trwania treści. Korzystając z tych metod konwersji, możesz przechowywać dodany do zakładek czas treści, a potem przeszukiwać odpowiedni czas strumienia w nowym wystąpieniu strumienia. Oto podejście, łącznie z podaniem linku do przykładowej aplikacji, która pokazuje działającą implementację zakładek.

Zapisuję zakładki

Zapisz zakładkę, gdy Aktywność jest wstrzymana.

- (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;
    ...
    }
  }
}

Wczytuję zakładki

Wczytaj zakładkę, gdy ponownie prosisz o strumień. Jest to element implementacji interfejsu 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;
    }
  }
}

Przykładowa aplikacja

Przykładowa aplikacja