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

リアルタイム ビッダー(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 は、セキュア シグナル アダプターをインスタンス化するときに setUpWithConfiguration:completionHandler: メソッドを呼び出します。Google Mobile Ads SDKこのメソッドを使用して SDK を初期化します。

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

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

次の例では、完了ハンドラを呼び出して、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 はバックグラウンド スレッドで、すべてのアダプタから同時にシグナルを収集します。

次の例では、GADRTBSignalCompletionHandler 完了ハンドラを呼び出して、シグナルを収集して Google Mobile Ads SDK に返します。

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