Zu einer übersprungenen Werbeunterbrechung zurückkehren

Plattform auswählen: HTML5 Android iOS tvOS Roku

Als Video-Publisher möchten Sie möglicherweise verhindern, dass Zuschauer Ihre Mid-Roll-Anzeigen überspringen. Wenn ein Nutzer eine Werbeunterbrechung überspringt, können Sie ihn zum Beginn dieser Werbeunterbrechung zurückbringen und ihn nach Abschluss der Werbeunterbrechung wieder an die ursprüngliche Position zurückbringen. Diese Funktion wird als „Zurückspringen“ bezeichnet.

Ein Beispiel finden Sie im folgenden Diagramm. Ein Zuschauer sieht sich ein Video an und möchte von der 5-Minuten-Marke zur 15-Minuten-Marke springen. Bei der 10-Minuten-Marke gibt es jedoch eine Werbeunterbrechung, die er sich ansehen muss, bevor er sich den Inhalt danach ansehen kann:

So zeigen Sie diese Werbeunterbrechung:

  1. Prüfen Sie, ob der Nutzer eine Suche durchgeführt hat, bei der eine nicht angesehene Werbeunterbrechung übersprungen wurde. Wenn ja, bringen Sie ihn zur Werbeunterbrechung zurück.
  2. Nach Abschluss der Werbeunterbrechung bringen Sie ihn wieder an die ursprüngliche Position zurück.

Im Diagramm sieht das so aus:

So implementieren Sie die Funktion „Zurückspringen“ mit dem IMA DAI SDK, wie in AdvancedExample gezeigt.

Verhindern, dass eine Werbeunterbrechung übersprungen wird

Prüfen Sie, ob der Nutzer eine Suche durchgeführt hat, bei der eine nicht angesehene Werbeunterbrechung übersprungen wurde. Wenn ja, bringen Sie ihn zur Werbeunterbrechung zurück. Im erweiterten Beispiel für tvOS wird AVPlayerViewController verwendet, das eine Delegatenmethode enthält, mit der Sie erfahren, dass der Nutzer eine Suche durchgeführt hat. Wenn die Startzeit der Suche vor der vorherigen Werbeunterbrechung liegt (d. h., der Nutzer hat sie übersprungen) und diese Unterbrechung noch nicht wiedergegeben wurde, bringen Sie ihn zum Beginn der Werbeunterbrechung zurück. Erfassen Sie außerdem die Startzeit der ursprünglich angeforderten Suche, um sie später in Ihrem ad-break-did-end Handler zu prüfen:

- (void)playerViewController:(AVPlayerViewController *)playerViewController
  willResumePlaybackAfterUserNavigatedFromTime:(CMTime)oldTime
                      toTime:(CMTime)targetTime {
  if (self.streamManager) {
    IMACuepoint *prevCuepoint = [self.streamManager
        previousCuepointForStreamTime:CMTimeGetSeconds(targetTime)];
    if (prevCuepoint && !prevCuepoint.isPlayed && oldTime < prevCuepoint.startTime) {
      self.userSeekTime = CMTimeGetSeconds(targetTime);
      [self.playerViewController.player seekToTime:CMTimeMakeWithSeconds(
                 prevCuepoint.startTime, NSEC_PER_SEC)
                 toleranceBefore:kCMTimeZero
                  toleranceAfter:kCMTimeZero];
    }
  }
}

Nutzer an die ursprüngliche Position zurückbringen

Ändern Sie in Ihrem Ereignisdelegaten den Fall AD_BREAK_ENDED, um zu prüfen, ob die vorherige Werbeunterbrechung aufgrund der Funktion „Zurückspringen“ wiedergegeben wurde.


- (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event {
  NSLog(@"StreamManager event (%@).", event.typeString);
  switch (event.type) {
    // Your other events go here as normal.
    case kIMAAdEvent_AD_BREAK_ENDED: {
      if (self.userSeekTime > 0) {
        self.playerViewController.player
            seekToTime:CMTimeMakeWithSeconds(self.userSeekTime, NSEC_PER_SEC)
        toleranceBefore:kCMTimeZero
        toleranceAfter:kCMTimeZero];
        self.userSeekTime = 0;

      // existing handling for AD_BREAK_ENDED goes here.
      break;
    }
    // And so on for other events.
    default:
      break;
  }
}