In qualità di publisher di video, potresti voler impedire agli spettatori di guardare oltre i tuoi annunci mid-roll. Quando un utente cerca oltre un'interruzione pubblicitaria, puoi riportarlo all'inizio dell'interruzione e riportarlo nella posizione di ricerca al termine dell'interruzione pubblicitaria. Questa funzione è chiamata "snapback".
Ad esempio, consulta il diagramma riportato di seguito. Lo spettatore sta guardando un video e decide di andare dall'indicatore dei 5 minuti a quello dei 15 minuti. Tuttavia, c'è un'interruzione pubblicitaria in corrispondenza dell'indicatore dei 10 minuti che vuoi che i tuoi spettatori guardino prima che possano guardare i contenuti successivi:
Per mostrare questa interruzione pubblicitaria, svolgi i seguenti passaggi:
- Controlla se l'utente ha eseguito una ricerca che ha superato un'interruzione pubblicitaria non guardata e, in questo caso, riportalo all'interruzione pubblicitaria.
- Al termine dell'interruzione pubblicitaria, riporta l'utente alla ricerca originale.
In forma di diagramma, ha il seguente aspetto:
Di seguito viene spiegato come implementare lo snapack utilizzando l'SDK IMA DAI, come dimostrato nel nostro Esempio avanzato.
Impedire a una ricerca di interrompere la visione di un'interruzione pubblicitaria
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 di Roku si basa sulla pressione dei pulsanti in remoto per consentire all'utente di eseguire la ricerca. Ogni volta che l'utente preme il pulsante Avanti, salta in avanti nello stream di un determinato numero di secondi. Lo stesso metodo che gestisce questo passaggio controlla anche se il passaggio va oltre o entra in un'interruzione pubblicitaria e, in caso affermativo, indirizza l'utente all'inizio di quell'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
Ripristinare la ricerca originale dell'utente
Nel gestore adBreakEnded
, controlla se l'interruzione pubblicitaria precedente è stata riprodotta come risultato dello snapshot. Se è così, riporta
l'utente nel punto in cui cercava inizialmente (a condizione che
non si tratti di un'interruzione pubblicitaria che si è appena riprodotta):
player.adBreakEnded = Function(adBreakInfo as Object)
If m.isSnapback
m.seek(m.timeAfterSnapback * 1000)
m.isSnapback = False
End If
End Function