Favoritos

En esta guía, se muestra cómo implementar la función de favoritos con el SDK de IMA de DAI Cuando se usa la inserción de anuncios dinámicos (DAI) para transmisiones de video on demand (VOD). Aquí se presupone que hay una implementación de DAI de IMA que funcione, como la que se presenta en Comienza ahora.

¿Qué son los favoritos?

Agregar a favoritos es la capacidad de guardar y luego regresar a un punto específico en la transmisión de contenido. Supongamos que un usuario mira contenido de cinco minutos sale de la transmisión de video por Internet y regresa a ella. Agregar a favoritos guarda la la posición del usuario en la transmisión para que esta pueda retomar desde donde dejar de responder, lo que brinda una experiencia fluida al usuario.

Funcionamiento interno de los favoritos de la DAI

Cuando agregue a favoritos una transmisión de DAI, debe registrar el ID y la hora de la transmisión. cuando el usuario abandona el video. Cuando el usuario regrese, vuelve a solicitar el y busca el tiempo ahorrado. Dado que cada instancia de la solicitud puede tener pausas publicitarias de distintas duraciones con solo guardar la transmisión tiempo no funcionará. Lo que en realidad quieres hacer es continuar desde el mismo tiempo de contenido.

Métodos de conversión al rescate

El SDK de DAI de IMA proporciona un par de métodos para solicitar la hora del contenido. durante un tiempo de transmisión determinado y el tiempo de transmisión de un contenido determinado tiempo. Con estos métodos de conversión, puedes guardar el historial hora de contenido y, luego, busca el tiempo de transmisión correspondiente en la nueva instancia de la transmisión. Este es el enfoque, incluyendo un vínculo a una app de ejemplo que muestra una implementación de favoritos en funcionamiento.

Guardando los favoritos

Guardar un favorito cuando la actividad esté en pausa.

- (void)viewWillDisappear:(BOOL)animated {
  [super viewWillDisappear:animated];
  [self.contentPlayer pause];
  // Ignore this if you're presenting a modal view (e.g. in-app clickthrough).
  if ([self.navigationController.viewControllers indexOfObject:self] ==
      NSNotFound) {
    NSTimeInterval contentTime =
        [self.streamManager contentTimeForStreamTime:CMTimeGetSeconds(
            self.contentPlayer.currentTime)];
    self.video.savedTime = contentTime;
    ...
    }
  }
}

Cargando favoritos

Carga el favorito cuando vuelvas a solicitar una transmisión. Es parte de la implementación la interfaz VideoStreamPlayer

- (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event {
  ...
  case kIMAAdEvent_STREAM_LOADED: {
    if (self.video.savedTime > 0) {
      NSTimeInterval streamTime =
          [self.streamManager streamTimeForContentTime:self.video.savedTime];
      [self.IMAVideoDisplay.playerItem
          seekToTime:CMTimeMakeWithSeconds(streamTime, NSEC_PER_SEC)];
      self.video.savedTime = 0;
    }
  }
}

App de ejemplo

App de ejemplo