整合安全信號轉接器

安全信號是從用戶端裝置收集並與特定出價方共用的編碼資料。本指南說明如何使用 IMA SDK 收集安全信號並傳送至 Google Ad Manager。

安全信號 API 須使用 IMA SDK for tvOS 4.8.2 以上版本。

如要選取信號和出價方,並啟用安全信號共用功能,請參閱「與出價方共用安全信號」。

使用第三方信號供應商

如要使用安全信號,您必須在應用程式中部署信號收集器轉接器類別,收集信號、編碼並傳遞至 IMA SDK。

請按照第三方供應商的操作說明,向他們設定帳戶、加入架構,並在應用程式中設定安全信號轉接程式。

tvOS 適用的 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)
}
...