セキュア シグナルの利用を開始する

セキュア シグナルは、クライアント デバイスで収集され、選択したビッダーと共有されるエンコードされたデータです。このガイドでは、IMA SDK を使用して安全なシグナルを収集し、Google アド マネージャーに送信する方法について説明します。

セキュア シグナル API には、iOS 向け IMA SDK バージョン 3.18.1 以降が必要です。

シグナルとビッダーを選択してセキュア シグナルの共有を有効にするには、ビッダーとセキュア シグナルを共有するをご覧ください。

サードパーティのシグナル プロバイダを使用する

安全なシグナルを使用するには、アプリにシグナル コレクタ アダプタ クラスをデプロイして、シグナルを収集、エンコードし、IMA SDK に渡す必要があります。

サードパーティ プロバイダの手順に沿って、プロバイダのアカウントを設定し、フレームワークを含め、アプリでセキュア シグナル アダプタを設定します。

iOS 向け IMA SDK は、コードに何も変更を加えなくても、各セキュア シグナル アダプタを自動的に初期化します。

セキュア シグナル アダプタをプロジェクトに追加する方法の例を次に示します。

カスタムデータを送信する

サードパーティのシグナル プロバイダを使用するだけでなく、カスタムデータを使用してシグナルを収集、エンコード、送信することもできます。カスタムデータを含むセキュア シグナルを送信するには、アド マネージャーでカスタム シグナルを有効にする必要があります。

ストリーム リクエストごとに、次の操作を行います。

  1. エンコードされたカスタムデータを文字列として含む IMASecureSignals オブジェクトを作成します。
  2. IMAStreamRequest.secureSignals 属性を設定して、ストリーミング リクエストに IMASecureSignals オブジェクトを追加します。

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)
  }
}