Snapback

Als Video-Publisher möchten Sie vielleicht Ihre Zuschauer daran hindern, die über Mid-Roll-Anzeigen hinausgehen. Wenn ein Nutzer nach einer Werbeunterbrechung spult, können Sie sie an den Beginn der Werbeunterbrechung nach Abschluss der Werbeunterbrechung zur Suchposition. Dieses 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 im Android SDK das Objekt PlayerControl, um die Suche zu erkennen. Wenn der Nutzer sucht, lösen Sie die Methode onSeek() der SampleHlsVideoPlayerCallback wurde von SampleAdsWrapper implementiert. Diese Methode (siehe unten) prüft den Cue-Punkt vor dem Aufruf suchen. Wenn es noch nicht wiedergegeben wird, zum Anfang der Werbeunterbrechung springen anstelle des ursprünglichen gewünschten Suchpunkts und speichern Sie diesen Punkt in snapBackTime.

@Override
public void onSeek(int timeMillis) {
  double timeToSeek = timeMillis;
  if (streamManager != null) {
    CuePoint cuePoint =
        streamManager.getPreviousCuePointForStreamTime(timeMillis / 1000);
    if (cuePoint != null && !cuePoint.isPlayed()) {
      snapBackTime = timeToSeek / 1000.0; // Update snapback time.
      // Missed cue point, so snap back to the beginning of cue point.
      timeToSeek = cuePoint.getStartTime() * 1000;
      videoPlayer.seek(Math.round(timeToSeek));
      videoPlayer.setCanSeek(false);
      return;
    }
  }
  videoPlayer.seek(Math.round(timeToSeek));
}

Den Nutzer zu seiner ursprünglichen Suche zurückversetzen

Wenn Sie jetzt ein onAdBreakEnded-Ereignis erhalten, prüfen Sie, ob snapBackTime festgelegt ist. In diesem Fall sollten Sie den Nutzer zu dieser Stelle im Stream weiterleiten, Pause, die sie sich gerade angesehen haben, war das Ergebnis eines Snapbacks:

@Override
public void onAdBreakEnded() {
  // Re-enable player controls.
  videoPlayer.setCanSeek(true);
  videoPlayer.enableControls(true);
  if (snapBackTime > 0) {
    videoPlayer.seek(Math.round(snapBackTime * 1000));
  }
  snapBackTime = 0;
}