Tornare a un'interruzione pubblicitaria saltata

Seleziona la piattaforma: HTML5 Android iOS tvOS Roku

In qualità di publisher di video, potresti voler impedire agli spettatori di saltare gli annunci mid-roll. Quando un utente salta un'interruzione pubblicitaria, puoi riportarlo all'inizio dell'interruzione e poi alla posizione che aveva raggiunto dopo che l'interruzione è terminata. Questa funzionalità si chiama "snapback".

Ad esempio, guarda il diagramma riportato di seguito. Lo spettatore sta guardando un video e decide di passare dal minuto 5 al minuto 15. Tuttavia, al minuto 10 è presente un'interruzione pubblicitaria che vuoi che guardi prima di poter guardare i contenuti successivi:

Per mostrare questa interruzione pubblicitaria, segui questi passaggi:

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

In forma di diagramma, si presenta così:

Ecco come implementare lo snapback utilizzando l'SDK IMA DAI, come illustrato in Esempio avanzato.

Impedire a una ricerca di lasciare un'interruzione pubblicitaria non guardata

Controlla se l'utente ha eseguito una ricerca che ha saltato un'interruzione pubblicitaria non guardata e, in caso affermativo, riportalo all'interruzione pubblicitaria. Nell'SDK HTML5, imposta un listener di eventi sull'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 è stato riprodotto, esegui la ricerca 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 caso affermativo, porta l'utente a quel punto dello stream, perché l'interruzione pubblicitaria che ha appena guardato è il risultato dello snapback:

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