セキュア シグナル アダプターを開発する

リアルタイム ビッダー(RTB) シグナルを生成するシグナル プロバイダ SDK がある場合は、セキュア シグナル アダプタを開発して、Google Mobile Ads SDKが シグナルを SDK から収集できるようにすることができます。

Google Mobile Ads SDK は、選択した参加 認定 バイヤーOpen Bidding の購入者にシグナルを転送します。

次の図は、セキュア シグナルの収集におけるリクエストとレスポンスのライフサイクルを示しています。

セキュア シグナル アダプタは、アダプタの初期化とシグナルの収集を担当します。

セキュア シグナル アダプタを実装する

Google Mobile Ads SDK 用のセキュア シグナル アダプタを実装して、 SDK からシグナルを収集します。

このガイドでは、 GADRTBAdapter プロトコルを実装してセキュア シグナル アダプタを実装する方法について説明します。

次の例では、GADRTBAdapter プロトコルを実装しています。

Objective-C

@interface SampleAdapterSnippets : NSObject <GADRTBAdapter>
@end

アダプタを初期化する

Google Mobile Ads SDK がセキュア シグナル アダプタをインスタンス化すると、Google Mobile Ads SDKsetUpWithConfiguration:completionHandler: メソッド を呼び出します。このメソッドを使用して SDK を初期化します。

SDK が完全に初期化され、Google Mobile Ads SDK がシグナルを収集できる状態になったら、GADMediationAdapterSetUpCompletionBlock 完了ブロックを呼び出します。

セキュア シグナル アダプタがコールバックしない場合、Google Mobile Ads SDK はセキュア シグナル アダプタから シグナルを収集しません。

次の例では、完了 ハンドラ を呼び出して、Google Mobile Ads SDKが正常に初期化されたことを通知しています。

Objective-C

+ (void)setUpWithConfiguration:(GADMediationServerConfiguration *)configuration
             completionHandler:(GADMediationAdapterSetUpCompletionBlock)completionHandler {
  // Add your SDK initialization logic here.

  // Invoke the completionHandler once initialization completes. Pass a nil
  // error to indicate initialization succeeded.
  completionHandler(nil);
}

アダプタと SDK のバージョンを報告する

セキュア シグナル アダプタは、アダプタのバージョンと SDK のバージョンの両方を報告する必要があります。Google Mobile Ads SDK は、レポート作成とトラブルシューティングにこれらのバージョンを使用します。

SDK が同じバイナリでこのアダプタを実装している場合は、アダプタと SDK の両方のバージョンに同じバージョンを返すことができます。

次の例では、セキュア シグナル アダプタのバージョンを返します。

Objective-C

+ (GADVersionNumber)adapterVersion {
  // If your secure signals SDK implements this adapter in the same binary
  // return the same version as your SDK.
  // return [self adSDKVersion];

  // If you built a separate binary for this secure signals adapter, return
  // the adapter's version here.
  GADVersionNumber version = {};
  version.majorVersion = 4;
  version.minorVersion = 5;
  version.patchVersion = 6;
  return version;
}

次の例では、セキュア シグナル アダプタがやり取りする SDK のバージョンを返します。

Objective-C

+ (GADVersionNumber)adSDKVersion {
  // Return your SDK's version string here.
  NSString *versionString = kSDKVersionString;
  NSArray<NSString *> *components = [versionString componentsSeparatedByString:@"."];
  GADVersionNumber version = {};
  if (components.count == 3) {
    version.majorVersion = components[0].integerValue;
    version.minorVersion = components[1].integerValue;
    version.patchVersion = components[2].integerValue;
  } else {
    NSLog(@"Unexpected version string: %@. Returning 0.0.0 for adSDKVersion.", versionString);
  }
  return version;
}

kSDKVersionString は、SDK のバージョン 文字列に置き換えます。

シグナルを収集する

広告リクエストごとに、Google Mobile Ads SDK はバックグラウンド スレッドですべての アダプタから同時にシグナルを収集します。

次の例では、Google Mobile Ads SDK を呼び出して、シグナルを収集して返します。 GADRTBSignalCompletionHandler

Objective-C

- (void)collectSignalsForRequestParameters:(GADRTBRequestParameters *)params
                         completionHandler:(GADRTBSignalCompletionHandler)handler {
  // Add your signal collection logic here.
  NSString *signals = kSampleSignalPlaceholder;

  // Return the signals as a string to the Google Mobile Ads SDK.
  handler(signals, nil);
}

kSampleSignalPlaceholder は、 セキュア シグナル文字列に置き換えます。

シグナルの収集は 1 秒以内に完了する必要があります。シグナルの収集に 1 秒以上かかる場合は、アダプタの初期化時にセキュア シグナル アダプタ または SDK にシグナルをキャッシュすることを検討してください。

セキュア シグナル アダプタがシグナルを収集できない場合は、 nil シグナルと NSError オブジェクトを使用して完了ハンドラを呼び出します。

シグナルを難読化する

ビッダーやキュレーション パートナーとセキュア シグナルを共有する場合は、シグナルを難読化 する必要があります。

広告ネットワークの追加情報に nil 値を返す

セキュア シグナル アダプタには、追加のネットワーク追加情報パラメータは必要ありません。

次の例の +networkExtrasClass メソッドは nil 値を返します。

Objective-C

+ (nullable Class<GADAdNetworkExtras>)networkExtrasClass {
  // Network extras are not applicable because signal providers do not request ads.
  return nil;
}