Snapback

Jako wydawca wideo możesz uniemożliwić widzom przeszukując reklamy w trakcie filmu. Gdy użytkownik przegląda przerwę na reklamę, możesz wrócić do początku przerwy na reklamę, do miejsca, w którym chcesz przewinąć, po zakończeniu przerwy na reklamę. Ten jest nazywany „przyciąganiem”.

Oto przykład: Widz ogląda film, i postanawia przejść od 5-minutowego filmu do piętnastego. Jednak po 10 minucie reklamy następuje przerwa na reklamę, aby zapoznać się z treścią, zanim obejrzą treść po filmie:

Aby wyświetlić tę przerwę na reklamę, wykonaj te czynności:

  1. Sprawdź, czy użytkownik przeprowadził przewijanie, które przeskoczyło poza nieobejrzaną przerwę na reklamę. Jeśli tak, wróć do przerwy na reklamę.
  2. Po zakończeniu przerwy na reklamę wróć do początkowego przewijania.

W postaci diagramu wygląda to tak:

Oto jak wdrożyć ten proces w pakiecie IMA DAI SDK, tak jak w przypadku AdvancedExample

Zapobiegaj pozostawaniu przez przewijanie nieobejrzanej przerwy na reklamę

sprawdzić, czy użytkownik przeprowadził przewijanie, które nie minęło od nieobejrzanej przerwy na reklamę; Jeśli tak, wróć do przerwy na reklamę. W przykładzie dotyczącym iOS Advanced użyj informacji o interakcjach użytkownika z Twoim interfejsem. w celu wykrycia, kiedy użytkownik przeprowadził wyszukiwanie. Zachowaj godzinę rozpoczęcia przewijania, aby ją sprawdzić jeśli zaliczy nieodtworzoną przerwę na reklamę podczas przewijania. Gdy użytkownik porzucił elementy sterujące odtwarzaniem filmu, porównał jego bieżącą godzinę z w ostatniej przerwie na reklamę. Jeśli przerwa na reklamę przypada po rozpoczęciu przewijania czas (co oznacza, że użytkownik przeskoczył ponad granicę) i nie był jeszcze odtworzony, przewijają je do początku przerwy na reklamę. Ustaw też flagę snapback, aby sprawdzić ją później w obiekcie obsługującym zakończenie przerwy na reklamę:

- (IBAction)videoControlsTouchStarted:(id)sender {
  self.seekStartTime = self.contentPlayer.currentTime;
}

- (IBAction)videoControlsTouchEnded:(id)sender {
  self.seekEndTime = CMTimeMake(self.progressBar.value, 1);
  IMACuepoint *lastCuepoint =
      [self.streamManager previousCuepointForStreamTime:CMTimeGetSeconds(self.seekEndTime)];
  if (!lastCuepoint.played && (lastCuepoint.startTime > CMTimeGetSeconds(self.seekStartTime))) {
    self.snapbackMode = YES
    // Add 1 to the seek time to get the keyframe at the start of the ad to be your landing place.
    [self.contentPlayer seekToTime:CMTimeMakeWithSeconds(lastCuepoint.startTime + 1, NSEC_PER_SEC)];
  }
}

Przywróć użytkownikowi pierwotne wyszukiwanie

W module obsługi reklam zakończonych przerwą na reklamę sprawdź, czy poprzedni w wyniku wywołania zwrotnego została odtworzona przerwa. Jeśli tak, zwróć użytkownika do miejsca, które chciali początkowo szukać (pod warunkiem, że nie znalazł się w środku przerwy na reklamę):

- (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event {
  switch (event.type) {
    case kIMAAdEvent_AD_BREAK_ENDED: {
      if (self.snapbackMode) {
        self.snapbackMode = NO;
        if (CMTimeCompare(self.seekEndTime, self.contentPlayer.currentTime)) {
          [self.contentPlayer seekToTime:self.seekEndTime];
        }
      }
      break;
    }
  }
}