Snapback

In qualità di publisher di video, puoi impedire agli spettatori di guardare oltre gli annunci mid-roll. Quando un utente cerca di andare oltre un'interruzione pubblicitaria, puoi riportarlo all'inizio dell'interruzione e riportarlo alla posizione di ricerca al termine dell'interruzione. Questa funzione è chiamata "snapback".

Come esempio, vedi il diagramma seguente. Lo spettatore sta guardando un video e decide di andare dall'indicatore dei 5 minuti a quello dei 15 minuti. Tuttavia, è presente un'interruzione pubblicitaria in corrispondenza dell'indicatore dei 10 minuti in cui vuoi che guardino prima che possano guardare i contenuti successivi:

Per mostrare questa interruzione pubblicitaria, svolgi i seguenti passaggi:

  1. Controlla se l'utente ha eseguito una ricerca che ha superato un'interruzione pubblicitaria non guardata e, in questo caso, riportalo all'interruzione pubblicitaria.
  2. Al termine dell'interruzione pubblicitaria, riporta l'utente alla ricerca originale.

In forma di diagramma, l'aspetto è simile al seguente:

Di seguito è riportata la procedura per implementare questo flusso di lavoro nell'SDK IMA HTML5, come indicato nell'Esempio avanzato.

Impedire che una ricerca lasci un'interruzione pubblicitaria non guardata

Controlla se l'utente ha eseguito una ricerca che ha superato un'interruzione pubblicitaria non guardata e, in questo caso, riportalo all'interruzione pubblicitaria. Nell'SDK HTML5, imposta un listener di eventi per l'evento seeked del player di contenuti per attivare onSeekEnd(). Questo metodo (presentato di seguito) controlla il cue point prima del tempo di ricerca dell'utente. Se non viene riprodotto, vai all'inizio dell'interruzione pubblicitaria anziché al punto di ricerca iniziale desiderato e salva il punto di ricerca desiderato in snapForwardTime.

function onSeekEnd() {
  if (isLiveStream) { return; }
  if (isSnapback) {
    isSnapback = false;
    return;
  }
  var currentTime = videoElement.currentTime;
  var previousCuePoint =
      streamManager.previousCuePointForStreamTime(currentTime);
  if (previousCuePoint && !previousCuePoint.played) {
    isSnapback = true;
    snapForwardTime = currentTime;
    videoElement.currentTime = previousCuePoint.start;
}

Riportare l'utente alla ricerca originale

Ora, quando ricevi un evento AD_BREAK_ENDED, controlla se snapForwardTime è impostato. In tal caso, indirizza l'utente a quel punto dello stream, perché l'interruzione pubblicitaria che ha appena guardato è il risultato di uno snapshot:

function onAdBreakEnded(e) {
  videoElement.controls = true;
  clickElement.style.display = 'none';
  adUiDiv.style.display = 'none';
  if (snapForwardTime && snapForwardTime > videoElement.currentTime) {
    videoElement.currentTime = snapForwardTime;
    snapForwardTime = null;
  }
}