セキュア シグナルは、クライアント デバイスで収集され、選択したビッダーと共有されるエンコードされたデータです。このガイドでは、IMA SDK を使用して安全なシグナルを収集し、Google アド マネージャーに送信する方法について説明します。
セキュア シグナル API には、iOS 向け IMA SDK バージョン 3.18.1 以降が必要です。
シグナルとビッダーを選択してセキュア シグナルの共有を有効にするには、ビッダーとセキュア シグナルを共有するをご覧ください。
サードパーティのシグナル プロバイダを使用する
安全なシグナルを使用するには、アプリにシグナル コレクタ アダプタ クラスをデプロイして、シグナルを収集、エンコードし、IMA SDK に渡す必要があります。
サードパーティ プロバイダの手順に沿って、プロバイダのアカウントを設定し、フレームワークを含め、アプリでセキュア シグナル アダプタを設定します。
iOS 向け IMA SDK は、コードに何も変更を加えなくても、各セキュア シグナル アダプタを自動的に初期化します。
セキュア シグナル アダプタをプロジェクトに追加する方法の例を次に示します。
カスタムデータを送信する
サードパーティのシグナル プロバイダを使用するだけでなく、カスタムデータを使用してシグナルを収集、エンコード、送信することもできます。カスタムデータを含むセキュア シグナルを送信するには、アド マネージャーでカスタム シグナルを有効にする必要があります。
ストリーム リクエストごとに、次の操作を行います。
- エンコードされたカスタムデータを文字列として含む
IMASecureSignals
オブジェクトを作成します。 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)
}
}