Les SDK IMA permettent d'intégrer facilement des annonces multimédias à vos sites Web et applications. Les SDK IMA peuvent demander des annonces à n'importe quel ad server conforme à la norme VAST et gérer la lecture des annonces dans vos applications. Avec les SDK IMA DAI, les applications envoient une demande de flux pour les annonces et le contenu vidéo (VOD ou contenu en direct). Le SDK renvoie ensuite un flux vidéo combiné, ce qui vous évite d'avoir à gérer le basculement entre les vidéos d'annonces et de contenu dans votre application.
Sélectionnez la solution DAI qui vous intéresse.
Insertion dynamique de séries d'annonces
Ce guide explique comment lire un flux en direct ou VOD d'insertion dynamique de séries d'annonces à l'aide du SDK IMA DAI pour tvOS avec un lecteur vidéo. Pour afficher ou suivre un exemple d'intégration complète, téléchargez l'application exemple Pod Serving (Obj C ou Swift).
Présentation de l'insertion dynamique de séries d'annonces IMA
L'implémentation de la diffusion de séries d'annonces à l'aide du SDK IMA DAI pour tvOS implique deux composants principaux :
StreamRequest
: objet qui définit une demande de flux aux serveurs publicitaires de Google. Doit être créé à l'aide deIMAPodStreamRequest
ouIMAPodVODStreamRequest
pour activer le service de pods. Les deux méthodes nécessitent un code réseau, etIMAPodStreamRequest
nécessite également une clé d'élément personnalisé. Une clé API est facultative.IMAStreamManager
: objet qui gère la communication entre le flux vidéo et le SDK IMA DAI, par exemple en déclenchant des pings de suivi et en transmettant les événements de flux à l'éditeur.
Prérequis
Avant de commencer, vous avez besoin des éléments suivants :
- Xcode 13 ou version ultérieure.
- CocoaPods (recommandé), Swift Package Manager ou une copie téléchargée du SDK IMA DAI pour tvOS.
- Une application tvOS déjà configurée avec le SDK IMA DAI pour lire des flux vidéo avec des annonces DAI. Si vous n'avez pas encore d'application de ce type, nous vous recommandons d'utiliser tvOS DAI BasicExample comme point de départ. BasicExample contient le codebase référencé dans ce guide. Pour savoir comment implémenter le SDK IMA DAI, consultez le guide de démarrage rapide.
Configurer vos variables d'insertion de séries d'annonces
Toutes les modifications nécessaires pour le service de pods sont effectuées dans ViewController.swift
en Swift ou ViewController.m
en Objective-C. Les extraits de ce guide utilisent par défaut le langage Swift. La première étape consiste à mettre à jour les variables constantes.
Voici les constantes de demande de flux de bloc d'annonces à ajouter :
STREAM_URL
(uniquement utilisé pour les diffusions en direct) : URL du flux vidéo fournie par votre outil de manipulation de fichier manifeste ou votre partenaire tiers utilisant la diffusion de séries d'annonces. Il devrait vous demander d'insérer l'ID de flux fourni par le SDK IMA DAI avant d'envoyer une demande. Dans ce cas, l'URL du flux inclut un espace réservé,"[[STREAMID]]"
, qui est remplacé par l'ID du flux avant d'envoyer une requête.NETWORK_CODE
: code de réseau de votre compte Ad Manager 360.CUSTOM_ASSET_KEY
(uniquement utilisé pour les diffusions en direct) : clé de composant personnalisée qui identifie votre événement de diffusion de séries d'annonces dans Ad Manager 360. Il peut être créé par votre outil de manipulation du fichier manifeste ou par un partenaire tiers d'insertion de séries d'annonces.API_KEY
(utilisé uniquement pour les diffusions en direct) : clé API facultative qui peut être requise pour récupérer un ID de flux à partir du SDK IMA DAI.
Modifiez la section des variables de l'exemple pour qu'elle corresponde à ce qui suit :
...
class ViewController:
UIViewController,
IMAAdsLoaderDelegate,
IMAStreamManagerDelegate,
AVPlayerViewControllerDelegate
{
static let streamUrl = ""
static let networkCode = ""
static let customAssetKey = ""
static let APIKey = ""
static let backupStreamURLString = ""
var adsLoader: IMAAdsLoader?
...
Créez une demande de flux de série d'annonces en direct ou VOD.
Diffusion de pods de diffusions en direct
Modifiez la méthode requestStream
pour créer une requête de flux de pod en direct en instanciant IMAPodStreamRequest
.
...
func requestStream() {
guard let playerViewController = self.playerViewController else return
guard let adContainerView = self.adContainerView else return
guard let adsLoader = self.adsLoader else return
self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
adDisplayContainer = IMAAdDisplayContainer(
adContainer: adContainerView, viewController: self)
// Create a podserving stream request.
request = IMAPodStreamRequest(
networkCode: self.networkCode,
customAssetKey: self.customAssetKey,
adDisplayContainer: adDisplayContainer,
videoDisplay: self.videoDisplay,
userContext: nil)
adsLoader.requestStream(with: request)
}
...
Diffusion de séries d'annonces dans un flux VOD
Modifiez la méthode requestStream
pour créer une demande de flux de pod VOD en instanciant IMAPodVODStreamRequest
.
...
func requestStream() {
guard let playerViewController = self.playerViewController else return
guard let adContainerView = self.adContainerView else return
guard let adsLoader = self.adsLoader else return
self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
adDisplayContainer = IMAAdDisplayContainer(
adContainer: adContainerView, viewController: self)
// Create a podserving stream request.
request = IMAPodVODStreamRequest(
networkCode: self.networkCode,
adDisplayContainer: adDisplayContainer,
videoDisplay: self.videoDisplay,
userContext: nil)
adsLoader.requestStream(with: request)
}
...
Modifier et définir l'URL du flux
Diffusion de pods de diffusions en direct
Modifiez les méthodes IMAAdsLoaderDelegate
en utilisant streamManager.streamId
pour obtenir l'ID du flux. Insérez ensuite l'ID du flux dans STREAM_URL
, en remplaçant "[[STREAMID]]"
. Une fois cette modification effectuée, la nouvelle URL du flux peut être définie à l'aide de videoDisplay.loadStream()
.
...
// MARK: - IMAAdsLoaderDelegate
func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
let streamManager = adsLoadedData.streamManager
let streamId = streamManager.streamId
let urlString = streamUrl.replacingOccurrences(of: "[[STREAMID]]", with: streamId)
let loadedStreamUrl = URL(string:urlString)
self.videoDisplay.loadStream(loadedStreamUrl, subtitles:@[])
self.videoDisplay.play()
streamManager.delegate = self
streamManager.initialize(with: nil)
self.streamManager = streamManager
}
...
Diffusion de séries d'annonces dans un flux VOD
Modifiez les méthodes IMAAdsLoaderDelegate
en utilisant streamManager.streamId
pour obtenir l'ID du flux. Demandez ensuite une URL de flux à votre partenaire technologique vidéo (PTV) et appelez IMAStreamManager.loadThirdPartyStream()
pour qu'IMA charge l'URL de flux et les éventuels sous-titres renvoyés par votre PTV.
...
// MARK: - IMAAdsLoaderDelegate
func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
let streamManager = adsLoadedData.streamManager
let streamId = streamManager.streamId
// 'vtpInterface' is a place holder for your own video technology partner
// (VTP) API calls.
let streamUrl = vtpInterface.requestStreamURL(streamID)
self.streamManager.loadThirdPartyStream(streamUrl, streamSubtitles:@[])
streamManager.delegate = self
streamManager.initialize(with: nil)
self.streamManager = streamManager
}
Nettoyer les composants IMA DAI
Lorsque vous avez terminé de demander et d'afficher des annonces dans un flux Pod Serving avec le SDK IMA DAI, nous vous suggérons de nettoyer toutes les ressources une fois la session Pod Serving terminée. Appelez IMAStreamManager.destroy()
pour arrêter la lecture du flux, arrêter tout suivi des annonces et libérer tous les éléments de flux chargés.
Pour voir d'autres exemples d'utilisation du SDK tvOS, consultez les exemples sur GitHub.