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 viene spiegato come implementare questo flusso di lavoro nell'SDK IMA di Roku, 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. L'esempio avanzato Roku si basa sulla pressione dei pulsanti remota per consentire all'utente di cercare: ogni volta che l'utente preme il pulsante Avanti, va avanti nello stream di un determinato numero di secondi. Lo stesso metodo che gestisce questo salto controlla anche se l'intervallo va oltre o entra in un'interruzione pubblicitaria e, in caso affermativo, indirizza l'utente all'inizio dell'interruzione pubblicitaria:

Function handleFastForward(player as Object, streamManager as Object, updatedTime As Integer)
  previousAd = streamManager.getPreviousCuePoint(updatedTime)
  If previousAd = Invalid or previousAd.hasPlayed
    player.seek(updatedTime * 1000)
  Else If previousAd.start > player.currentTime
    player.isSnapback = True
    player.timeAfterSnapback = updatedTime
    player.seek(previousAd.start * 1000 + 1000)
  End If
End Function

Riportare l'utente alla ricerca originale

Nel gestore adBreakEnded, verifica se l'interruzione pubblicitaria precedente è stata riprodotta come risultato di uno snapshot. In tal caso, riporta l'utente al punto in cui l'utente stava cercando inizialmente (purché non si trovasse nel mezzo dell'interruzione pubblicitaria appena riprodotta):

player.adBreakEnded = Function(adBreakInfo as Object)
  If m.isSnapback
    m.seek(m.timeAfterSnapback * 1000)
    m.isSnapback = False
  End If
End Function