Como publicador de videos, es posible que quieras evitar que los usuarios omitan tus anuncios durante el video. Cuando un usuario busca más allá de una pausa publicitaria puedes regresar al inicio de la pausa y luego regresar a su ubicación de búsqueda después de que se complete la pausa publicitaria. Esta se llama "restablecimiento automático".
Como ejemplo, consulta el siguiente diagrama. Si el usuario está mirando un video y decide saltar de la marca de 5 a la de 15 minutos. Sin embargo, hay una pausa publicitaria a los 10 minutos que quieres que lo vean antes de poder ver el contenido después:
Para mostrar esta pausa publicitaria, sigue estos pasos:
- Verifica si el usuario realizó un salto que pasó una pausa publicitaria sin mirar. y, si es así, lleva al usuario a la pausa publicitaria.
- Una vez finalizada la pausa publicitaria, regresa a su búsqueda original.
En forma de diagrama, se vería así:
Aquí te mostramos cómo implementar este flujo de trabajo en el SDK de IMA de DAI, como se hace en el AdvancedExample.
Evita que un salto deje sin mirar una pausa publicitaria
Verificar si el usuario realizó un salto que pasó una pausa publicitaria sin mirar y, si es así, lleva al usuario a la pausa publicitaria. En el ejemplo avanzado de iOS, usa la interacción del usuario con tu IU para detectar cuándo ejecutó un salto. Conserva la hora de inicio de la búsqueda para verificar si pasó una pausa publicitaria sin reproducir en su búsqueda. Cuando el usuario libera los controles de video y compara la hora actual con la hora del la pausa publicitaria más reciente. Si la pausa publicitaria cae después del inicio de la búsqueda tiempo (lo que significa que el usuario ha saltado) y todavía no se ha reproducido, y regresarlos al inicio de la pausa publicitaria. Además, establecer una marca de restablecimiento automático para verificar más tarde en el controlador de pausas publicitarias completas:
- (IBAction)videoControlsTouchStarted:(id)sender {
self.seekStartTime = self.contentPlayer.currentTime;
}
- (IBAction)videoControlsTouchEnded:(id)sender {
self.seekEndTime = CMTimeMake(self.progressBar.value, 1);
IMACuepoint *lastCuepoint =
[self.streamManager previousCuepointForStreamTime:CMTimeGetSeconds(self.seekEndTime)];
if (!lastCuepoint.played && (lastCuepoint.startTime > CMTimeGetSeconds(self.seekStartTime))) {
self.snapbackMode = YES
// Add 1 to the seek time to get the keyframe at the start of the ad to be your landing place.
[self.contentPlayer seekToTime:CMTimeMakeWithSeconds(lastCuepoint.startTime + 1, NSEC_PER_SEC)];
}
}
Cómo regresar al usuario a su salto original
En el controlador de finalización de la pausa publicitaria, comprueba si la anterior se jugó la pausa como resultado de Snapback. Si es así, devuelve el nombre al lugar que intentaban buscar inicialmente (siempre y cuando que no se reprodujo en el medio de la pausa publicitaria):
- (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event {
switch (event.type) {
case kIMAAdEvent_AD_BREAK_ENDED: {
if (self.snapbackMode) {
self.snapbackMode = NO;
if (CMTimeCompare(self.seekEndTime, self.contentPlayer.currentTime)) {
[self.contentPlayer seekToTime:self.seekEndTime];
}
}
break;
}
}
}