Snapback

En tant qu'éditeur de vidéos, vous souhaitez peut-être empêcher les internautes de rechercher vos annonces mid-roll. Lorsqu'un utilisateur recherche après une coupure publicitaire, vous pouvez le ramener au début de celle-ci, puis le renvoyer à son emplacement de recherche une fois la coupure publicitaire terminée. Cette fonctionnalité s'appelle "snapback".

À titre d'exemple, consultez le schéma ci-dessous. Lorsqu'un spectateur regarde une vidéo, il décide de s'étendre sur une période allant de 5 minutes à 15 minutes. En revanche, vous souhaitez qu'ils regardent une coupure publicitaire au bout de 10 minutes avant de pouvoir regarder le contenu suivant:

Pour diffuser cette coupure publicitaire, procédez comme suit:

  1. Vérifiez si l'utilisateur a exécuté une recherche qui a dépassé une coupure publicitaire non visionnée et, le cas échéant, renvoyez-le à la coupure.
  2. Une fois la coupure publicitaire terminée, rétablissez la recherche d'origine.

Sous forme de diagramme, cela ressemble à ceci:

Voici comment implémenter ce workflow dans le SDK IMA pour Roku, comme indiqué dans notre exemple avancé.

Empêcher une recherche de laisser une coupure publicitaire non visionnée

Vérifiez si l'utilisateur a effectué une recherche après une coupure publicitaire non visionnée et, le cas échéant, redirigez-le vers la coupure. L'exemple avancé Roku repose sur l'appui sur un bouton à distance pour que l'utilisateur effectue une recherche. Chaque fois que l'utilisateur appuie sur le bouton d'avance, il avance dans le flux d'un nombre défini de secondes. La même méthode qui gère ce saut permet également de vérifier si ce saut est passé ou s'il s'agit d'une coupure publicitaire, et si c'est le cas, elle redirige l'utilisateur au début de cette coupure:

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

Revenir à la recherche initiale de l'utilisateur

Dans le gestionnaire adBreakEnded, vérifiez si la précédente coupure publicitaire a été lue suite à la fonctionnalité Snapback. Si tel est le cas, renvoyez l'utilisateur à l'endroit qu'il cherchait initialement (à condition que ce ne soit pas au milieu de la coupure publicitaire qui vient d'être diffusée):

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