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 diesen Workflow im IMA DAI SDK, wie in AdvancedExample.

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. Verwenden Sie im Android SDK das Objekt PlayerControl, um die Suche zu erkennen. Wenn der Nutzer sucht, lösen Sie die Methode onSeek() des SampleHlsVideoPlayerCallback aus, die von SampleAdsWrapper implementiert wird. Diese Methode (siehe unten) prüft den Cue-Point vor der Suchzeit des Nutzers. Wenn er nicht wiedergegeben wurde, springen Sie stattdessen zum Beginn dieser Werbeunterbrechung und speichern Sie den gewünschten Suchpunkt 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));
}

Nutzer an die ursprüngliche Position zurückbringen

Wenn Sie ein onAdBreakEnded-Ereignis erhalten, prüfen Sie, ob snapBackTime festgelegt ist. Wenn ja, bringen Sie den Nutzer an diese Stelle im Stream, da die gerade angesehene Werbeunterbrechung das Ergebnis des Zurückspringens war:

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