Prerequisiti
- Xcode 13 o superiore
Questa guida descrive come richiamare l'SDK PAL per ricevere un nonce e monitorare eventi di riproduzione. Per seguire la guida completa, scarica il Applicazione di esempio PAL per tvOS.
Aggiungi l'SDK PAL al progetto
Installa l'SDK PAL utilizzando il gestore pacchetti Swift
L'SDK della libreria di accesso programmatico supporta Swift Package a partire dalla versione 2.5.3. Segui le i passaggi seguenti per importare il pacchetto Swift.
In Xcode, installa il pacchetto Swift SDK IMA accedendo a File > Aggiungi pacchetti...
Nel prompt visualizzato, cerca GitHub IMA SDK Swift Package repository:
https://github.com/googleads/swift-package-manager-google-programmatic-access-library-tvos
Seleziona la versione del pacchetto Swift SDK PAL che vuoi utilizzare. Per i nuovi progetti, consigliamo di utilizzare la versione principale fino alla successiva.
Quando hai finito, Xcode risolve le dipendenze dei pacchetti li scarica in background. Per maggiori dettagli su come aggiungere un pacchetto , vedi le dipendenze Articolo di Apple.
Scarica e installa manualmente l'SDK PAL
Se non vuoi utilizzare Swift Package Manager, puoi scaricare l'SDK PAL e aggiungerlo manualmente al tuo progetto.
- Scarica ed estrai l'SDK PAL per iOS
- Segui la Guida per gli sviluppatori Apple per incorporare il framework nel tuo progetto.
Genera un nonce
Un "nonce" è una singola stringa criptata generata da PAL utilizzando
PALNonceLoader
. L'SDK PAL richiede che ogni nuova richiesta di streaming sia accompagnata
da un nonce appena generato. Tuttavia, i nonce possono essere riutilizzati per più annunci
all'interno dello stesso stream.
Tutti gli snippet di codice riportati di seguito sono modifiche
ViewController.m
in
Applicazione di esempio PAL per tvOS.
Per richiedere un nonce, inizia importando la libreria PAL:
@import ProgrammaticAccessLibrary;
A questo punto, crei un'istanza di PALNonceLoader
e aggiungi stub per i due
metodi delegati:
@interface ViewController () <PALNonceLoaderDelegate>
// The nonce loader to use for nonce requests.
@property(nonatomic) PALNonceLoader *nonceLoader;
// The view in which a video would play.
// In this sample, it is mocked for simplification.
@property(nonatomic, weak) IBOutlet UIView *videoView;
@end
...
- (void) viewDidLoad {
[super viewDidLoad];
// The default value for 'allowStorage' and
// 'directedForChildOrUnknownAge' is 'NO', but should be updated once the
// appropriate consent has been gathered. Publishers should either
// integrate with a CMP or use a different method to handle storage consent.
PALSettings *settings = [[PALSettings alloc] init];
settings.allowStorage = YES;
settings.directedForChildOrUnknownAge = NO;
self.nonceLoader = [[PALNonceLoader alloc] initWithSettings:settings];
self.nonceLoader.delegate = self;
}
#pragma mark - PALNonceLoaderDelegate methods
- (void)nonceLoader:(PALNonceLoader *)nonceLoader
withRequest:(PALNonceRequest *)request
didLoadNonceManager:(PALNonceManager *)nonceManager {
}
- (void)nonceLoader:(PALNonceLoader *)nonceLoader
withRequest:(PALNonceRequest *)request
didFailWithError:(NSError *)error {
}
Quindi, avvia una richiesta nonce, compila le relative proprietà e utilizzala per inizializza un gestore nonce:
@interface ViewController () <PALNonceLoaderDelegate>
// The nonce loader to use for nonce requests.
@property(nonatomic) PALNonceLoader *nonceLoader;
// The nonce manager result from the last successful nonce request.
@property(nonatomic) PALNonceManager *nonceManager;
// The view in which a video would play. In this sample, it is mocked for
// simplification.
@property(nonatomic, weak) IBOutlet UIView *videoView;
@end
...
- (void)viewDidLoad {
...
self.nonceLoader.delegate = self;
[self requestNonceManager];
}
...
#pragma mark - UI Callback methods
/**
* Requests a new nonce manager with a request containing arbitrary test values
* like a (sane) user might supply. Displays the nonce or error on success. This
* should be called once per stream.
*
* The PALNonceRequest parameters set here are example parameters.
* You should set your parameters based on your own app characteristics.
*/
- (void)requestNonceManager {
PALNonceRequest *request = [[PALNonceRequest alloc] init];
request.continuousPlayback = PALFlagOff;
request.descriptionURL = [NSURL URLWithString:@"https://example.com/desc?key=val"];
request.iconsSupported = YES;
request.playerType = @"AwesomePlayer";
request.playerVersion = @"4.2.1";
request.PPID = @"123987456";
request.sessionID = @"Sample SID";
// Sample API framework integer. See reference docs for more details.
NSInteger SampleAPIFramework = 501;
request.supportedApiFrameworks = [NSMutableSet setWithArray:@[ SampleAPIFramework ]];
request.videoPlayerHeight = 480;
request.videoPlayerWidth = 640;
request.willAdAutoPlay = PALFlagOn;
request.willAdPlayMuted = PALFlagOff;
if (self.nonceManager) {
// Detach the old nonce manager's gesture recognizer before destroying it.
[self.videoView removeGestureRecognizer:self.nonceManager.gestureRecognizer];
self.nonceManager = nil;
}
[self.nonceLoader loadNonceManagerWithRequest:request];
}
Infine, compila i delegati del caricatore nonce in modo da registrare i nonce generati:
#pragma mark - PALNonceLoaderDelegate methods
- (void)nonceLoader:(PALNonceLoader *)nonceLoader
withRequest:(PALNonceRequest *)request
didLoadNonceManager:(PALNonceManager *)nonceManager {
NSLog(@"Programmatic access nonce: %@", nonceManager.nonce);
// Capture the created nonce manager and attach its gesture recognizer to the video view.
self.nonceManager = nonceManager;
[self.videoView addGestureRecognizer:self.nonceManager.gestureRecognizer];
}
- (void)nonceLoader:(PALNonceLoader *)nonceLoader
withRequest:(PALNonceRequest *)request
didFailWithError:(NSError *)error {
NSLog(@"Error generating programmatic access nonce: %@", error);
}
Quando effettui la chiamata VAST diretta (DVC), imposta il tuo nonce come valore nella
Parametro givn
. Il nonce è sicuro per l'URL: non è necessario codificarlo.
Infine, dovrai aggiungere metodi per gestire l'invio della sessione di riproduzione dei contenuti
informazioni e clic all'SDK. Vedi l'esempio di implementazione
metodi sendPlaybackStart
, sendPlaybackEnd
e sendAdClick
:
...
// Reports the start of playback for the current content session.
- (void)sendPlaybackStart {
[self.nonceManager sendPlaybackStart];
}
// Reports the end of playback for the current content session.
- (void)sendPlaybackEnd {
[self.nonceManager sendPlaybackEnd];
}
// Reports an ad click for the current nonce manager, if not nil.
- (void)sendAdClick {
[self.nonceManager sendAdClick];
}
Nella tua implementazione, sendPlaybackStart
deve essere chiamato sul "video player
avvia" quando inizia la riproduzione per la prima volta, in risposta a un
un'azione avviata dall'utente (click-to-play) o un'azione avviata dall'app (riproduzione automatica).
sendPlaybackEnd
verrà chiamato al termine della riproduzione e sendAdClick
da chiamare ogni volta che lo spettatore fa clic su un annuncio.
(Facoltativo) Inviare indicatori di Google Ad Manager tramite ad server di terze parti
Configura la richiesta dell'ad server di terze parti per Ad Manager. Dopo completa i seguenti passaggi, il parametro nonce si propaga dall'SDK PAL tramite i server intermediari e poi a Google Ad Manager. Ciò consente una migliore monetizzazione tramite Google Ad Manager.
Configura l'ad server di terze parti in modo da includere il nonce nel richiesta ad Ad Manager. Di seguito è riportato un esempio di un tag annuncio configurato all'interno della ad server di terze parti:
https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...
Per ulteriori dettagli, consulta Implementazione lato server di Google Ad Manager .
Ad Manager cerca givn=
per identificare il valore nonce. L'annuncio di terze parti
server deve supportare alcune macro, come
%%custom_key_for_google_nonce%%
e sostituiscilo con il parametro di query nonce
che hai fornito nel passaggio precedente. Ulteriori informazioni su come eseguire questa operazione
devono essere disponibili
nella documentazione dell'ad server di terze parti.