TVSDK supporta la risoluzione e l’inserimento di annunci per VOD e flussi live/lineari.
Prima di poter includere pubblicità nei contenuti video, fornisci le seguenti informazioni sui metadati:
mediaID
che identifica il contenuto specifico da riprodurre.zoneID
, che identifica la tua azienda o il tuo sito web.L’applicazione deve fornire a TVSDK le informazioni PTAuditudeMetadata
necessarie per connettersi al server di annunci.
Per impostare i metadati del server di annunci:
Crea un'istanza di PTAuditudeMetadata e impostane le relative proprietà.
PTAuditudeMetadata *adMetadata = [[PTAuditudeMetadata alloc] init];
adMetadata.zoneId = @"INSERT_YOUR_ZONE_ID_HERE";
adMetadata.domain = @"INSERT_YOUR_DOMAIN_HERE";
// Optionally set user agent
adMetadata.userAgent = @"INSERT_AGENT_NAME_HERE;
Imposta l'istanza PTAuditudeMetadata
come metadati per i metadati correnti PTMediaPlayerItem
utilizzando PTAdResolvingMetadataKey
.
// Metadata is an instance of PTMetadata that is used to create the PTMediaPlayerItem
[metadata setMetadata:adMetadata forKey:PTAdResolvingMetadataKey];
[adMetadata release];
Ecco un esempio:
PTMetadata *metadata = [self createMetadata];
PTMediaPlayerItem *item =
[[[PTMediaPlayerItem alloc] initWithUrl:url mediaId:yourMediaID metadata:metadata] autorelease];
- (PTMetadata *) createMetadata {
PTMetadata* metadata = [[[PTMetadata alloc] init] autorelease];
PTAuditudeMetadata *adMetadata = [[[PTAuditudeMetadata alloc] init] autorelease];
adMetadata.zoneId = yourZoneID;
adMetadata.domain = yourAdServerDomain;
[metadata setMetadata:adMetadata forKey:PTAdResolvingMetadataKey];
return metadata;
}
La riproduzione a eventi completi (FER) è una risorsa VOD che agisce come risorsa live/DVR, pertanto l’applicazione deve adottare misure per garantire che gli annunci siano posizionati correttamente.
Per i contenuti live, TVSDK utilizza i metadati/suggerimenti nel manifesto per determinare dove collocare gli annunci. Tuttavia, a volte i contenuti live/lineari potrebbero assomigliare al contenuto VOD. Ad esempio, al completamento del contenuto live, al manifesto live viene aggiunto un tag EXT-X-ENDLIST
. Per HLS, il tag EXT-X-ENDLIST
indica che il flusso è un flusso VOD. TVSDK non è in grado di distinguere automaticamente questo flusso da un normale flusso VOD per inserire correttamente gli annunci.
L’applicazione deve indicare a TVSDK se il contenuto è live o VOD specificando il PTAdSignalingMode
.
Per un flusso FER, il server Adobe Primetime ad decisioning non deve fornire l'elenco delle interruzioni pubblicitarie che devono essere inserite nella timeline prima di avviare la riproduzione. Questo è il processo tipico per il contenuto VOD. Invece, specificando una modalità di segnalazione diversa, TVSDK legge tutti i punti di cue dal manifesto FER e va al server di annunci per ogni punto di cue per richiedere un'interruzione pubblicitaria. Questo processo è simile al contenuto live/DVR.
Oltre a ogni richiesta associata a un punto di cue, TVSDK invia una richiesta aggiuntiva di annunci per annunci pre-roll.
Da un'origine esterna, ad esempio vCMS, ottenere la modalità di segnalazione da utilizzare.
Crea i metadati relativi alla pubblicità.
Se il comportamento predefinito deve essere sovrascritto, specifica PTAdSignalingMode
utilizzando PTAdMetadata.signalingMode
.
I valori validi sono PTAdSignalingModeDefault
, PTAdSignalingModeManifestCues
e PTAdSignalingModeServerMap
.
È necessario impostare la modalità di segnalazione degli annunci prima di chiamare prepareToPlay
. Dopo che TVSDK inizia a risolvere e posizionare gli annunci sulla timeline, le modifiche alla modalità di segnalazione degli annunci vengono ignorate. Imposta la modalità quando crei i metadati pubblicitari per la risorsa.
Continua a riprodurre.
PTMetadata *metadata = [[[PTMetadata alloc] init] autorelease];
PTAuditudeMetadata *adMetadata = [[[PTAuditudeMetadata alloc] init] autorelease];
adMetadata.zoneId = your-auditude-zone-id;
adMetadata.domain = @"your-auditude-domain";
//adMetadata.enableDVRAds = YES; // FOR LIVE DVR case
//adMetadata.signalingMode = PTAdSignalingModeManifestCues;
// FOR VOD FER case
NSMutableDictionary *targetingParameters = [[[NSMutableDictionary alloc] init] autorelease];
[targetingParameters setValue:@"ipad" forKey:@"device"];
[targetingParameters setValue:@"preroll" forKey:@"AD_OPPORTUNITY_ID"];
adMetadata.targetingParameters = targetingParameters;
NSMutableDictionary *customParameters = [[[NSMutableDictionary alloc] init] autorelease];
[customParameters setValue:@"your-media-id" forKey:@"NW_ID"];
[customParameters setValue:@"preroll" forKey:@"AD_OPPORTUNITY_ID"];
adMetadata.customParameters = customParameters;
[metadata setMetadata:adMetadata forKey:PTAdResolvingMetadataKey];