Comienza a usar indicadores seguros

Los indicadores seguros son datos codificados que se recopilan en el dispositivo del cliente y se comparten con ofertantes seleccionados. En esta guía, se muestra cómo recopilar y enviar indicadores seguros a Google Ad Manager con el SDK de IMA.

La API de indicadores seguros requiere la versión 3.18.1 o posterior del SDK de IMA para iOS.

Para seleccionar indicadores y ofertantes, y habilitar el uso compartido de indicadores seguros, consulta Cómo compartir indicadores seguros con los ofertantes.

Usar un proveedor de indicadores externo

Para usar indicadores seguros, debes implementar una clase de adaptador de recopilador de indicadores en tu aplicación para recopilar indicadores, codificarlos y pasarlos al SDK de IMA.

Sigue las instrucciones de tu proveedor externo para configurar una cuenta con él, incluir frameworks y configurar su adaptador de indicadores seguros en tu app.

El SDK de IMA para iOS inicializa automáticamente cada adaptador de indicadores seguros, sin necesidad de realizar cambios adicionales en tu código.

A continuación, se muestra un ejemplo de cómo podrías agregar un adaptador de indicadores seguros a tu proyecto:

Envía datos personalizados

Además de usar un proveedor de indicadores externo, también puedes recopilar, codificar y enviar indicadores con datos personalizados. Antes de enviar indicadores seguros con datos personalizados, debes activar los indicadores personalizados en Ad Manager.

Para cada solicitud de transmisión, haz lo siguiente:

  1. Crea un objeto IMASecureSignals que contenga tus datos personalizados codificados como una cadena.
  2. Agrega el objeto IMASecureSignals a tu solicitud de transmisión configurando el atributo IMAStreamRequest.secureSignals:

Objective-C

app/ViewController.m

- (void)requestStream {
  // Create a stream request. Use one of "Livestream request" or "VOD request",
  //  depending on your type of stream.
  IMAStreamRequest *request;
  if (kStreamType == StreamTypeLive) {
    // Livestream request. Replace the asset key with your value.
    request = [[IMALiveStreamRequest alloc] initWithAssetKey:kLiveStreamAssetKey
                                                networkCode:kNetworkCode
                                          adDisplayContainer:self.adDisplayContainer
                                                videoDisplay:self.imaVideoDisplay
                                                userContext:nil];
  } else {
    // VOD request. Replace the content source ID and video ID with your values.
    request = [[IMAVODStreamRequest alloc] initWithContentSourceID:kVODContentSourceID
                                                          videoID:kVODVideoID
                                                      networkCode:kNetworkCode
                                                adDisplayContainer:self.adDisplayContainer
                                                      videoDisplay:self.imaVideoDisplay
                                                      userContext:nil];
  }
  
  IMASecureSignals *signals =
      [[IMASecureSignals alloc] initWithCustomData:@"My encoded signal string"];
  request.secureSignals = signals;
  
  [self.adsLoader requestStreamWithRequest:request];
}

Swift

app/ViewController.swift

 func requestStream() {
  // Create a stream request. Use one of "Livestream request" or "VOD request".
  let signals = IMASecureSignals(customData: "My encoded signal string")
  if ViewController.requestType == StreamType.live {
    // Livestream request.
    let request = IMALiveStreamRequest(
      assetKey: ViewController.assetKey,
      networkCode: ViewController.networkCode,
      adDisplayContainer: adDisplayContainer!,
      videoDisplay: imaVideoDisplay,
      userContext: nil)
    request.secureSignals = signals
    adsLoader?.requestStream(with: request)
  } else {
    // VOD stream request.
    let request = IMAVODStreamRequest(
      contentSourceID: ViewController.contentSourceID,
      videoID: ViewController.videoID,
      networkCode: ViewController.networkCode,
      adDisplayContainer: adDisplayContainer!,
      videoDisplay: imaVideoDisplay,
      userContext: nil)
    request.secureSignals = signals
    adsLoader?.requestStream(with: request)
  }
}