Resguardo

Como publicador de videos, recomendamos que evites que los usuarios busquen más allá de tus anuncios durante el video. Cuando un usuario busca más allá de una pausa publicitaria, puedes llevarlo de regreso al inicio de esa pausa y, luego, regresarlo a su ubicación de búsqueda una vez que se haya completado esa pausa. Esta función se denomina “restablecimiento automático”.

A modo de ejemplo, consulta el siguiente diagrama. Cuando el usuario mira un video, decide saltar de la marca de 5 a 15 minutos. Sin embargo, hay una pausa publicitaria a los 10 minutos que deseas que miren antes de que puedan mirar el contenido después:

Para mostrar esta pausa publicitaria, sigue estos pasos:

  1. Verifica si el usuario ejecutó una búsqueda que pasó más allá de una pausa publicitaria no vista y, de ser así, llévalo a la pausa publicitaria.
  2. Una vez que se complete la pausa publicitaria, regresa a su búsqueda original.

En forma de diagrama, se ve así:

A continuación, se muestra cómo implementar este flujo de trabajo en el SDK de DAI de IMA, como se hace en AdvancedExample.

Cómo evitar que una búsqueda salga de una pausa publicitaria sin mirar

Verifica si el usuario ejecutó una búsqueda que pasó después de una pausa publicitaria no vista y, de ser así, llévalo de vuelta a la pausa publicitaria. Para el ejemplo de iOS Advanced, usa la interacción del usuario con tu IU a fin de detectar cuándo ejecutó una búsqueda. Conserva la hora de inicio de la búsqueda para verificar si pasaron una pausa publicitaria sin reproducir en su búsqueda. Cuando el usuario suelte los controles de video, compara su tiempo actual con el de la pausa publicitaria más reciente. Si la pausa publicitaria cae después de la hora de inicio de la búsqueda (lo que significa que el usuario pasó de ella) y aún no se reprodujo, regresa al inicio de la pausa publicitaria. Además, configura una marca de restablecimiento para verificar más tarde en tu controlador de pausa publicitaria completa:

- (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)];
  }
}

Hacer que el usuario vuelva a su búsqueda original

En el controlador de pausa publicitaria, verifica si la pausa anterior se reprodujo como resultado del restablecimiento automático. Si es así, regresa al usuario al lugar que estaba intentando buscar al principio (siempre y cuando no sea el medio de la pausa publicitaria que se acaba de reproducir):

- (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;
    }
  }
}