Snapback

Als Video-Publisher möchten Sie vielleicht Ihre Zuschauer daran hindern, die über Mid-Roll-Anzeigen hinausgehen. Wenn ein Nutzer nach einer Werbeunterbrechung überspringt, können Sie sie an den Beginn der Werbeunterbrechung nach Abschluss der Werbeunterbrechung zur Suchposition. Diese Funktion wird als „Snapback“ bezeichnet.

Ein Beispiel finden Sie im Diagramm unten. Der Zuschauer sieht sich ein Video an. und beschließt, von der 5-Minuten- auf die 15-Minuten-Marke zu springen. Nach 10 Minuten wird jedoch eine Werbeunterbrechung eingefügt, bevor sie sich die Inhalte danach ansehen können:

So kannst du diese Werbeunterbrechung anzeigen lassen:

  1. Prüfen, ob der Nutzer eine Suche ausgeführt hat, die über eine nicht angesehene Werbeunterbrechung hinausgesprungen ist, Falls ja, leite sie zurück zur Werbeunterbrechung.
  2. Nach Abschluss der Werbeunterbrechung wird die ursprüngliche Suche wieder aktiviert.

In Diagrammform sieht das so aus:

Im Folgenden wird beschrieben, wie Sie diesen Workflow im IMA DAI SDK implementieren, AdvancedExample verwenden.

Bei einem Suchvorgang wird eine Werbeunterbrechung nicht angesehen

Prüfen Sie, ob der Nutzer eine Suche ausgeführt hat, die über eine nicht angesehene Werbeunterbrechung hinausgegangen ist. Falls ja, leite sie zurück zur Werbeunterbrechung. Verwenden Sie für das Beispiel iOS Advanced die Interaktion des Nutzers mit Ihrer Benutzeroberfläche um zu erkennen, wann sie eine Suche ausgeführt haben. Zu prüfende Startzeit beibehalten wenn bei der Suche eine noch nicht wiedergegebene Werbeunterbrechung übersprungen wurde. Wenn Nutzende die Videosteuerelemente loslässt, die aktuelle Zeit mit der die letzte Werbeunterbrechung. Werbeunterbrechung nach dem Start der Suche (der Nutzer ist darüber gesprungen) und es wurde noch nicht abgespielt. zurück zum Beginn der Werbeunterbrechung spulen. Setzen Sie auch ein Snapback-Flag, um sie später im Handler für den Abschluss der Werbeunterbrechung zu überprüfen:

- (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)];
  }
}

Den Nutzer zu seiner ursprünglichen Suche zurückversetzen

Überprüfe im Handler für beendete Werbeunterbrechungen, ob die vorherige Pause als Ergebnis des Snapbacks wiedergegeben. Wenn ja, geben Sie den Nutzer zu erreichen, die sie ursprünglich suchen wollten (solange nicht die Mitte der Werbeunterbrechung war, die gerade abgespielt wurde):

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