Salvar e carregar favoritos do fluxo de anúncios

Selecione a plataforma: HTML5 Android iOS tvOS Roku

Este guia mostra como implementar a criação de favoritos usando o SDK da DAI do IMA ao usar a Inserção de anúncios dinâmicos (DAI) para streams de vídeo on demand (VOD). Isso pressupõe uma implementação funcional da DAI do IMA, como a apresentada em Começar.

O que é adicionar aos favoritos?

A capacidade de salvar e depois voltar a um ponto específico no stream de conteúdo. Digamos que um usuário assista cinco minutos de conteúdo, saia do stream de vídeo e, em seguida, retorne a ele. Com os favoritos, a posição do usuário no stream é salva. Assim o stream pode começar de onde parou, proporcionando uma experiência agradável ao espectador.

Como funciona a criação de favoritos da DAI

Ao adicionar um fluxo da DAI aos favoritos, você precisa registrar o ID e o tempo do fluxo quando o usuário sai do vídeo. Quando o usuário voltar, solicite novamente o fluxo e procure o tempo salvo. Como cada instância do stream solicitado pode ter intervalos de anúncios de durações diferentes, salvar apenas o tempo do stream não funciona. O que você realmente quer fazer é continuar do mesmo tempo de conteúdo.

Métodos de conversão para ajudar

O SDK de DAI do IMA oferece um par de métodos para solicitar o tempo de conteúdo de um determinado tempo de stream e o tempo de stream de um determinado tempo de conteúdo. Usando esses métodos de conversão, você pode armazenar o tempo de conteúdo marcado com um marcador e, em seguida, buscar o tempo de stream correspondente na nova instância do stream. Confira a abordagem, incluindo um link para um app de exemplo que mostra uma implementação de favoritos em funcionamento.

Como salvar favoritos

Salvar um marcador quando a atividade for pausada.

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

Carregando favoritos

Carregue o marcador ao solicitar novamente uma transmissão. Isso faz parte da implementação da interface 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 exemplo

App de exemplo