Começar a usar indicadores seguros

Os indicadores seguros são dados codificados coletados no dispositivo do cliente e compartilhados com bidders selecionados. Este guia mostra como coletar e enviar indicadores seguros ao Google Ad Manager usando o SDK IMA.

A API Secure Signals exige a versão 3.18.1 ou mais recente do SDK do IMA para iOS.

Para selecionar indicadores e bidders e ativar o compartilhamento de indicadores seguros, consulte Compartilhar indicadores seguros com bidders.

Usar um provedor de indicadores de terceiros

Para usar indicadores seguros, implante uma classe adaptadora de coletor de indicadores no seu app para coletar indicadores, codificá-los e transmiti-los ao SDK do IMA.

Siga as instruções do provedor terceirizado para configurar uma conta com ele, incluir frameworks, e configurar o adaptador de indicadores seguros no seu app.

O SDK do IMA para iOS inicializa automaticamente cada adaptador de indicadores seguros, sem mudanças adicionais no seu código.

Confira um exemplo de como adicionar um adaptador de indicadores seguros ao seu projeto:

Enviar dados personalizados

Além de usar um provedor de indicadores terceirizado, você também pode coletar, codificar e enviar indicadores com dados personalizados. Antes de enviar indicadores seguros com dados personalizados, ative os indicadores personalizados no Ad Manager.

Para cada solicitação de stream, faça o seguinte:

  1. Crie um objeto IMASecureSignals que contenha seus dados personalizados codificados como uma string.
  2. Adicione o objeto IMASecureSignals à sua solicitação de transmissão definindo o 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)
  }
}