La spécification HLS Interstitials offre un moyen flexible de planifier et d'insérer des annonces dans un flux vidéo ou audio. Avec l'approche côté client, votre application contrôle entièrement le moment où les pauses publicitaires doivent être demandées et lues en créant la classe AVPlayerInterstitialEvent. Cette approche ne nécessite pas les tags EXT-X-DATERANGE dans les fichiers manifeste du flux de contenu. Les interstitiels HLS côté client vous permettent d'insérer dynamiquement des annonces dans n'importe quel contenu, sans avoir à modifier le fichier manifeste du flux ni les fichiers multimédias.
Ce guide explique comment intégrer le SDK Interactive Media Ads (IMA) dans une application de lecteur vidéo qui crée une session de diffusion en direct avec insertion d'annonces guidée par le serveur (SGAI) et planifie des interstitiels côté client. Pour en savoir plus, consultez DAI guidée par le serveur.
Prérequis
Avant de commencer, vous avez besoin des éléments suivants :
Un nouveau projet Xcode utilisant
Storyboardpour l'interface utilisateur. Pour en savoir plus, consultez Créer un projet Xcode pour une application.SDK IMA de Google. Pour en savoir plus, consultez Configurer le SDK IMA pour DAI.
Les paramètres suivants pour votre demande de diffusion en direct DAI :
NETWORK_CODE: code de réseau Google Ad Manager.CUSTOM_ASSET_KEY: chaîne personnalisée identifiant l'événement de diffusion en direct DAI. L'événement de diffusion en direct doit être de type "Fichier manifeste de la diffusion de séries d'annonces" pour l'insertion dynamique d'annonces.
Configurer un storyboard
Dans votre fichier iPhone.storyboard, procédez comme suit :
- Créez un objet
UIViewen tant que conteneur pour le lecteur vidéo et l'UI de l'annonce. - Créez une propriété
adUIViewde la classeViewControllerpour vous connecter à l'objetUIView. - Dans l'objet
adUIView, créez unUIButtonqui servira de bouton de lecture. - Créez une propriété
playButtonde la classeViewControllerpour vous connecter à l'objetUIButtonet une fonctiononPlayButtonTouchpour gérer les appuis de l'utilisateur.
Initialiser un chargeur d'annonces
Dans l'événement viewDidLoad du contrôleur de vue principal, procédez comme suit :
- Configurez un lecteur vidéo à l'aide des classes
AVPlayeretAVPlayerLayer. - Créez des objets
IMAAdDisplayContaineretIMAAVPlayerVideoDisplay. Le conteneur d'affichage des annonces spécifie leadUIViewpour que le SDK IMA DAI insère les sous-vues de l'UI des annonces. L'objet d'affichage vidéo sert de pont entre la logique publicitaire du SDK IMA DAI et le système de lecture AVFoundation, en suivant la lecture des annonces vidéo. - Initialisez l'objet
IMAAdsLoaderavec les paramètres de lecture et de localisation de l'UI des annonces.
L'exemple suivant initialise un chargeur d'annonces avec un objet IMASettings vide :
Envoyer une requête de flux
Pour demander des annonces pour un flux de contenu, créez un objet IMAPodStreamRequest et transmettez-le à votre instance IMAAdsLoader. Vous pouvez également définir la propriété adTagParameters pour fournir des options d'insertion dynamique d'annonces et des paramètres de ciblage pour votre flux.
Cet exemple appelle la méthode loadAdStream dans l'événement viewDidAppear :
Dans votre application de production, appelez la méthode loadAdStream une fois que l'utilisateur a sélectionné un flux de contenu.
Gérer les événements de chargement de flux
Implémentez le protocole IMAAdsLoaderDelegate pour gérer la réussite ou l'échec de la requête de flux :
- En cas de réussite, vous recevez un objet
IMAAdsLoadedDatacontenant leIMAStreamManager. Stockez la valeurstreamManager.streamIdpour la session DAI actuelle. - En cas d'échec, enregistrez l'erreur.
L'exemple suivant gère l'événement de flux chargé et consigne l'événement d'échec du chargement du flux :
Planifier les insertions d'annonces
Pour planifier une coupure publicitaire, créez un objet AVPlayerInterstitialEvent. Définissez la propriété templateItems de l'objet d'événement sur un tableau d'objets AVPlayerItem, où chaque objet d'élément contient une URL de fichier manifeste de bloc d'annonces.
Pour créer une URL de fichier manifeste de bloc d'annonces, consultez la documentation Méthode : fichier manifeste de bloc HLS.
À des fins de démonstration, l'exemple suivant génère une chaîne d'identifiant de pod à l'aide de l'heure actuelle du flux de contenu en direct. La fonction generatePodIdentifier renvoie l'identifiant du pod sous la forme ad_break_id/mid-roll-{minute}.
Dans votre application de production, récupérez l'identifiant du pod à partir d'une source qui fournit des valeurs uniques pour chaque coupure publicitaire, synchronisées pour tous les spectateurs du flux en direct.
L'exemple suivant planifie une coupure publicitaire qui doit commencer dans les deux minutes suivant le clic de l'utilisateur sur le bouton de lecture :
La méthode scheduleAdInsertion calcule l'heure de début de la coupure publicitaire et crée une URL de fichier manifeste de série d'annonces. Utilisez cette URL pour créer un objet AVPlayerInterstitialEvent.
Vous pouvez également utiliser la structure AVPlayerInterstitialEvent.Restrictions pour empêcher l'utilisateur de passer ou de rembobiner les annonces pendant leur lecture.
Gérer les événements d'annonces
Pour gérer les événements publicitaires, implémentez le protocole IMAStreamManagerDelegate. Cette approche vous permet de suivre le début et la fin des pauses publicitaires, et d'obtenir des informations sur les annonces individuelles.
Exécutez votre application. Si tout se passe bien, vous pouvez demander et lire des interstitiels à l'aide d'un flux de fichier manifeste de diffusion de pods.