Marque-page

Ce guide explique comment intégrer les favoris à l'aide du SDK IMA DAI lorsque vous utilisez l'insertion dynamique d'annonces pour les flux de vidéo à la demande. Cela suppose que l'implémentation d'IMA DAI fonctionne correctement, comme celle présentée dans l'article Premiers pas

Qu'est-ce que l'ajout de favoris ?

Les favoris permettent d'enregistrer un point spécifique, puis de revenir à ce dernier. dans le flux de contenu. Supposons qu'un utilisateur regarde cinq minutes de contenu quitte le flux vidéo, puis y retourne. L'ajout aux favoris la position de l'utilisateur dans le flux pour que celui-ci puisse reprendre pour offrir une expérience fluide à l'utilisateur.

Options avancées de l'ajout de favoris pour l'insertion dynamique d'annonces

Lorsque vous ajoutez un flux pour l'insertion dynamique d'annonce aux favoris, vous devez enregistrer l'ID et l'heure du flux. lorsque l'utilisateur quitte la vidéo. Lorsque l'utilisateur revient, demandez à nouveau et rechercher le temps gagné. Puisque chaque instance de la requête peut comporter des coupures publicitaires de différentes durées. Il suffit d'enregistrer la diffusion. l'heure ne fonctionnera pas. Ce que vous voulez vraiment faire, c'est continuer date et heure du contenu.

Les méthodes de conversion à la rescousse

Le SDK IMA DAI fournit deux méthodes pour demander l'heure du contenu pour une durée de diffusion donnée et la durée de diffusion d'un contenu donné heure. À l'aide de ces méthodes de conversion, vous pouvez stocker les favoris durée du contenu, puis recherchez la durée de la diffusion correspondante dans la nouvelle instance du flux. Voici l'approche à adopter, avec un lien à un exemple d'application qui montre une implémentation opérationnelle de la fonction d'ajout de favoris.

Enregistrement des favoris

Enregistrer un favori lorsque l'activité est mise en pause.

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

Chargement des favoris...

Chargez le favori lors d'une nouvelle demande de flux. Cela fait partie de l'implémentation l'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;
    }
  }
}

Application exemple

Application exemple