Premiers pas avec les signaux sécurisés

Les signaux sécurisés sont des données encodées collectées sur l'appareil client et partagées avec certains enchérisseurs. Ce guide vous explique comment collecter et envoyer des signaux sécurisés à Google Ad Manager à l'aide du SDK IMA.

L'API Secure Signals nécessite la version 3.18.1 ou ultérieure du SDK IMA pour iOS.

Pour sélectionner des signaux et des enchérisseurs, et activer le partage de signaux sécurisés, consultez Partager des signaux sécurisés avec les enchérisseurs.

Utiliser un fournisseur de signaux tiers

Pour utiliser des signaux sécurisés, vous devez déployer une classe d'adaptateur de collecteur de signaux dans votre application pour collecter les signaux, les encoder et les transmettre au SDK IMA.

Suivez les instructions de votre fournisseur tiers pour configurer un compte auprès de lui, inclure des frameworks, et configurer son adaptateur de signaux sécurisés dans votre application.

Le SDK IMA pour iOS initialise automatiquement chaque adaptateur de signaux sécurisés, sans qu'il soit nécessaire d'apporter d'autres modifications à votre code.

Voici un exemple de la façon dont vous pouvez ajouter un adaptateur de signaux sécurisés à votre projet :

Envoyer des données personnalisées

En plus d'utiliser un fournisseur de signaux tiers, vous pouvez également collecter, encoder et envoyer des signaux avec des données personnalisées. Avant de pouvoir envoyer des signaux sécurisés avec des données personnalisées, vous devez activer les signaux personnalisés dans Ad Manager.

Pour chaque demande de flux, procédez comme suit :

  1. Créez un objet IMASecureSignals contenant vos données personnalisées encodées sous forme de chaîne.
  2. Ajoutez l'objet IMASecureSignals à votre requête de flux en définissant l'attribut 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)
  }
}