Comenzar

Requisitos previos

  • Xcode 13 o una versión posterior

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 ver una app de ejemplo que usa PAL para generar un nonce, haz lo siguiente: descarga el ejemplo de iOS desde GitHub.

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 PAL, en Xcode, navega a Archivo > Add Packages...

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

    https://github.com/googleads/swift-package-manager-google-programmatic-access-library-ios
    
  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 transmisión nueva vaya acompañada de un nonce recién generado. Sin embargo, los nonces se pueden volver a usar para varias solicitudes de anuncios. dentro de la misma transmisión.

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

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

@import ProgrammaticAccessLibrary;

Aún tienes control sobre el correlator de transmisión, o &scor, que debería ser restablecer una vez por cada transmisión nueva. Se deben compartir todas las solicitudes de anuncios de la misma transmisión el mismo valor de PALNonceLoader y de correlator de transmisión para la limitación de frecuencia y características de exclusión competitiva para que funcionen correctamente.

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 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];
}

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.