安全信号

安全信号是在客户端设备上收集并与特定出价方共享的经过编码的数据。本指南介绍了如何使用 IMA SDK 收集安全信号并将其发送到 Google Ad Manager。

安全信号 API 需要 IMA SDK for iOS 3.18.1 或更高版本。

如需选择信号和出价方,并启用安全信号共享功能,请参阅与出价方共享安全信号

使用第三方信号提供商

如需使用安全信号,您必须在应用中部署信号收集器适配器类,以收集信号、对其进行编码并将其传递给 IMA SDK。

按照第三方提供商的说明在其处设置账号、添加框架,并在应用中设置其安全信号适配器。

适用于 iOS 的 IMA SDK 会自动初始化每个安全信号适配器,而无需对代码进行任何其他更改。

以下示例展示了如何向项目添加安全信号适配器:

发送自定义数据

除了使用第三方信号提供商之外,您还可以使用自定义数据收集、编码和发送信号。您必须先在 Ad Manager 中启用自定义信号,然后才能发送包含自定义数据的安全信号。

对于每个广告请求,请创建一个 IMASecureSignals 对象,其中包含以字符串形式编码的自定义数据。然后,通过调用 IMAAdsRequest.secureSignals 属性将 IMASecureSignals 对象添加到广告请求中。

以下是 Objective-C 和 Swift 中的示例:

Objective-C

BasicExample/ViewController.m

...
- (void)requestAds {
  // Create an ad display container for ad rendering.
  IMAAdDisplayContainer *adDisplayContainer =
      [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView
                                          viewController:self
                                          companionSlots:nil];
  // Create an ad request with our ad tag, display container, and optional user context.
  IMAAdsRequest *request = [[IMAAdsRequest alloc] initWithAdTagUrl:kTestAppAdTagUrl
                                                adDisplayContainer:adDisplayContainer
                                                   contentPlayhead:self.contentPlayhead
                                                       userContext:nil];
  
  IMASecureSignals *signals =
      [[IMASecureSignals alloc] initWithCustomData:@"My encoded signal string"];
  request.secureSignals = signals;
  
  [self.adsLoader requestAdsWithRequest:request];
}
...

Swift

BasicExample/ViewController.swift

...
private func requestAds() {
  // Create ad display container for ad rendering.
  let adDisplayContainer = IMAAdDisplayContainer(
    adContainer: videoView, viewController: self, companionSlots: nil)
  // Create an ad request with our ad tag, display container, and optional user context.
  let request = IMAAdsRequest(
    adTagUrl: ViewController.testAppAdTagURL,
    adDisplayContainer: adDisplayContainer,
    contentPlayhead: contentPlayhead,
    userContext: nil)
  
  let signals = IMASecureSignals(customData: "My encoded signal string")
  request.secureSignals = signals
  
  adsLoader.requestAds(with: request)
}
...