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