Inizia

Prerequisiti

  • Xcode 13 o superiore.

Questa guida descrive come richiamare l'SDK PAL per ricevere un nonce e monitorare eventi di riproduzione. Per vedere un'app di esempio che utilizza PAL per generare un nonce, scarica l'esempio per iOS da GitHub.

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.

  1. In Xcode, installa il pacchetto Swift SDK PAL accedendo a File > Aggiungi pacchetti...

  2. Nel prompt visualizzato, cerca GitHub SDK Swift Package per PAL repository:

    https://github.com/googleads/swift-package-manager-google-programmatic-access-library-ios
    
  3. 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.

  1. Scarica ed estrai l'SDK PAL per iOS
  2. 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 nuovo stream sia accompagnato da un un nonce appena generato. Tuttavia, i nonce possono essere riutilizzati per più richieste di annunci all'interno dello stesso stream.

Tutti gli snippet di codice riportati di seguito sono modifiche a ViewController.m nel Applicazione di esempio per iOS PAL.

Per richiedere un nonce, inizia importando la libreria PAL:

@import ProgrammaticAccessLibrary;

Hai comunque il controllo sul correlatore dello stream, o &scor, che dovrebbe essere vengono reimpostate una volta per ogni nuovo stream. Tutte le richieste di annunci dello stesso stream devono condividere lo stesso valore di PALNonceLoader e di correlatore dello stream per la quota limite e il corretto funzionamento delle funzionalità di esclusione competitiva.

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 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;
  request.OMIDPartnerName = @"SamplePartner";
  request.OMIDPartnerVersion = @"6.2.1";

  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.