En tant qu'éditeur de vidéos, vous voulez peut-être empêcher vos spectateurs après avoir regardé vos annonces mid-roll. Lorsqu'un utilisateur passe une coupure publicitaire, vous pouvez le ramener au début de cette coupure, puis le renvoyer à l'emplacement de la vidéo où il se trouvait avant la coupure une fois celle-ci terminée. Ce est appelée « snapback ».
Pour en savoir plus, consultez le diagramme ci-dessous. votre spectateur regarde une vidéo ; et décide de passer de 5 à 15 minutes. Cependant, il y a une coupure publicitaire à la 10e minute que vous souhaitez qu'ils regardent avant de pouvoir regarder le contenu qui suit :
Pour diffuser cette coupure publicitaire, procédez comme suit:
- Vérifier si l'utilisateur a lancé une recherche qui dépasse une coupure publicitaire non visionnée Si c'est le cas, redirigez-les vers la coupure publicitaire.
- Une fois la coupure publicitaire terminée, renvoyez-les à leur point de recherche d'origine.
Sous forme de diagramme, cela se présente comme suit :
Vous trouverez ci-dessous la procédure à suivre pour implémenter la fonctionnalité "Snapback" à l'aide du SDK IMA DAI AdvancedExample.
Empêcher une recherche de laisser une coupure publicitaire sans visionnage
Vérifier si l'utilisateur a effectué une recherche après une coupure publicitaire non visionnée
Si c'est le cas, redirigez-les
vers la coupure publicitaire.
L'exemple avancé tvOS exploite AVPlayerViewController
,
qui dispose d'une méthode déléguée pour vous
indiquer que l'utilisateur a lancé une recherche.
Si l'heure de début de la recherche est antérieure à la coupure publicitaire précédente (autrement dit,
que l'utilisateur a sauté) et que la coupure n'a pas encore été jouée,
pour qu'il retourne
au début de la coupure publicitaire. Notez également l'heure de début
a initialement demandé la vérification ultérieure dans votre gestionnaire ad-break-did-end
:
- (void)playerViewController:(AVPlayerViewController *)playerViewController willResumePlaybackAfterUserNavigatedFromTime:(CMTime)oldTime toTime:(CMTime)targetTime { if (self.streamManager) { IMACuepoint *prevCuepoint = [self.streamManager previousCuepointForStreamTime:CMTimeGetSeconds(targetTime)]; if (prevCuepoint && !prevCuepoint.isPlayed && oldTime < prevCuepoint.startTime) { self.userSeekTime = CMTimeGetSeconds(targetTime); [self.playerViewController.player seekToTime:CMTimeMakeWithSeconds( prevCuepoint.startTime, NSEC_PER_SEC) toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero]; } } }
Renvoyer l'utilisateur à sa recherche initiale
Dans votre délégué d'événements, modifiez le cas AD_BREAK_ENDED
pour vérifier si le
la coupure publicitaire précédente a été lue à la suite d'un Snapback.
- (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event { NSLog(@"StreamManager event (%@).", event.typeString); switch (event.type) { // Your other events go here as normal. case kIMAAdEvent_AD_BREAK_ENDED: { if (self.userSeekTime > 0) { self.playerViewController.player seekToTime:CMTimeMakeWithSeconds(self.userSeekTime, NSEC_PER_SEC) toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero]; self.userSeekTime = 0; // existing handling for AD_BREAK_ENDED goes here. break; } // And so on for other events. default: break; } }