Comenzar

Requisitos previos

  • Xcode 13 o una versión más reciente

En esta guía, se describe cómo invocar el SDK de PAL para recibir un nonce y supervisarlo. los eventos de reproducción. Para continuar con la guía completa, descarga el Aplicación de ejemplo PAL de tvOS.

Agrega el SDK de PAL a tu proyecto

Instala el SDK de PAL con Swift Package Manager

El SDK de la biblioteca de acceso programático admite Swift Package Manager a partir de la versión 2.5.3. Sigue el los siguientes pasos para importar el paquete de Swift.

  1. Para instalar el paquete de Swift del SDK de IMA, en Xcode, navega a Archivo > Add Packages...

  2. En el mensaje que aparece, busca el paquete de Swift del SDK de IMA en GitHub siguiente:

    https://github.com/googleads/swift-package-manager-google-programmatic-access-library-tvos
    
  3. Selecciona la versión del paquete de Swift del SDK de PAL que quieres usar. Para proyectos nuevos, recomendamos usar Hasta la siguiente versión principal.

Cuando finalizas, Xcode resuelve las dependencias de tus paquetes y y los descarga en segundo plano. Más información para agregar paquetes las dependencias, consulta Artículo de Apple.

Descarga e instala el SDK de PAL de forma manual

Si no quieres usar Swift Package Manager, puedes descargar el SDK de PAL y agregarlo a tu proyecto de forma manual.

  1. Descarga y extrae el SDK de PAL para iOS.
  2. Sigue la Guía para desarrolladores de Apple para incorporar el marco de trabajo en tu proyecto.

Cómo generar un nonce

Un "nonce" es una única cadena encriptada generada por PAL con el PALNonceLoader El SDK de PAL requiere que cada solicitud de transmisión nueva esté acompañada. con un nonce recién generado. Sin embargo, los nonces se pueden volver a usar en varios anuncios solicitudes dentro de la misma transmisión.

Todos los fragmentos de código que aparecen a continuación son modificaciones ViewController.m en Aplicación de ejemplo PAL de tvOS.

Para solicitar un nonce, comienza por importar la biblioteca PAL:

@import ProgrammaticAccessLibrary;

A continuación, crea una instancia de PALNonceLoader y agrega stubs para los dos métodos delegados:

@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 {
}

Luego, inicia una solicitud de nonce, propaga sus propiedades y úsala para Inicializa un administrador de 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];
}

Por último, propaga los delegados del cargador de nonce para registrar los nonces generados:

#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);
}

Cuando realices una llamada directa de VAST (DVC), establece el nonce como el valor en la Parámetro givn. El nonce es seguro para URLs. No es necesario que lo codifiques en formato URL.

Por último, debes agregar métodos para controlar el envío de la sesión de reproducción de contenido. y los clics en el SDK. Consulta el siguiente ejemplo en el que se implementa el métodos sendPlaybackStart, sendPlaybackEnd y 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];
}

En tu implementación, se debe invocar sendPlaybackStart en "reproductor de video". comenzar" cuando la reproducción se inicia por primera vez, en respuesta a un acción iniciada por el usuario (clic para reproducir) o una acción iniciada por la aplicación (reproducción automática) Se debe llamar a sendPlaybackEnd cuando finaliza la reproducción, y se debe llamar a sendAdClick. llamado cada vez que el usuario hace clic en un anuncio.

(Opcional) Envía indicadores de Google Ad Manager a través de servidores de anuncios de terceros

Configura la solicitud del servidor de anuncios de terceros para Ad Manager. Después de completa los siguientes pasos. El parámetro nonce se propaga desde el SDK de PAL. a través de sus servidores intermediarios y, luego, a Google Ad Manager. Esto permite una mejor monetización con Google Ad Manager.

Configura tu servidor de anuncios de terceros para incluir el nonce en el a Ad Manager. A continuación, le mostramos un ejemplo de una etiqueta de anuncio configurada en el servidor de anuncios de terceros:

https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...

Para obtener más información, consulta el artículo Implementación del servidor de Google Ad Manager de la guía de YouTube.

Ad Manager busca givn= para identificar el valor del nonce. El anuncio de terceros necesita admitir alguna macro propia, como %%custom_key_for_google_nonce%% y reemplázalo por el parámetro de consulta nonce que proporcionaste en el paso anterior. Más información para lograr esto debe estar disponible en la documentación del servidor de anuncios de terceros.