メディエーション

メディエーションの概要と AdMob メディエーションの管理画面の使用方法については、最初にこちらの記事をご覧ください。その後こちらのページをお読みになり、アプリにメディエーション コードを追加する手順をご確認ください。

プロジェクトへのメディエーションの追加

1. AdMob 広告を組み込む

AdMob 広告をアプリに組み込む場合と同じ手順に沿って行います。インタースティシャル以外の広告(バナーサイズ、ビッグバナー サイズなど)を組み込む場合は、バナー広告用の手順を行います。インタースティシャル広告(全画面に表示されるフルスクリーン広告)を組み込む場合は、インタースティシャル広告用の手順に沿って行います。

これらの組み込み手順を完了したら、下記のいくつかの小さな変更を加え、AdMob 広告のプレースメントをメディエーション プレースメントに変換します。これにより、複数のネットワークの広告を表示できます。

2. ネットワーク アダプタと SDK を追加する

以上で、広告の配信元として希望するすべての広告ネットワークの SDK とアダプタをダウンロードしてプロジェクトに追加する準備ができました。広告ネットワークへのリンクはメディエーション ネットワークのページをご覧ください。

ダウンロードしたネットワークのアダプタと SDK を Xcode に追加するには、プロジェクトを右クリックして [Add Files to project] をクリックします。

3. ネットワークの設定を含める

選択したネットワークに必要なフレームワーク、コンパイラ フラグ、リンカフラグをすべて含める必要があります。メディエーション ネットワークのページでは、各ネットワークの手順へのリンクを掲載していますのでご利用ください。

追加のコードを記述して、各広告ネットワークの広告ビューを作成する必要はありません。メディエーションにより、必要に応じて各広告ネットワークのアダプタと SDK が呼び出され、広告が作成されます。使用するすべてのネットワークの広告イベントの通知を受けるためのメディエーション リスナーの設定方法については後述します。

設定はこれだけです。

オプション設定

追加のリクエスト パラメータを指定する

ユーザー属性ターゲティング

オプションでユーザーの地域、性別、生年月日をリクエストに追加することもできます。必須ではありませんが、この情報に基づいてネットワークがよりきめ細かなターゲット広告を配信することができます。 GADRequest では、生年月日や地域を設定するためのメソッドと、性別を設定するためのプロパティを提供しています。これらのパラメータは、メディエーション対象のすべてのネットワークに転送されます。以下がその例です。 次に例を示します。

Objective-C

GADRequest *request = [GADRequest request];
request.gender = kGADGenderFemale;
NSDateComponents *components = [[NSDateComponents alloc] init];
components.month = 1;
components.day = 1;
components.year = 1985;
request.birthday = [[NSCalendar currentCalendar] dateFromComponents:components];

Swift

let request = GADRequest()
request.gender = .Female
let components = NSDateComponents()
components.month = 1
components.day = 1
components.year = 1985
request.birthday = NSCalendar.currentCalendar().dateFromComponents(components)

ネットワーク固有のパラメータ

ネットワークによっては、収入やバナーの色など、他のパラメータに対応しているところもあります。必須ではありませんが、この情報に基づいてネットワークがよりきめ細かなターゲット広告を配信することができます。追加のパラメータがある広告ネットワークは、GADExtras を拡張したアダプタ内のクラスを公開します。

たとえば、収入パラメータを公開しているサンプル広告ネットワークがあるとします。その広告ネットワークは、以下のようなクラスを提供している可能性があります。

Objective-C

@interface SampleExtras : GADExtras

  @property(nonatomic, assign) NSInteger income;

@end

Swift

class SampleExtras: GADExtras {
  var income = 0
  ...
}

このネットワークのメディエーションを行う場合は、その extras クラスのインスタンスを registerAdNetworkExtras: に渡すと、収入をその特定のネットワークに指定できます。

Objective-C

SampleExtras *sampleExtras = [[SampleExtras alloc] init];
sampleExtras.income = 65000;
[request registerAdNetworkExtras:sampleExtras];

Swift

let sampleExtras = SampleExtras()
sampleExtras.income = 65000
request.registerAdNetworkExtras(sampleExtras)

リクエスト エージェント(サードパーティ ライブラリ用)

Mobile Ads SDK を参照するサードパーティ ライブラリは、setRequestAgent メソッドを呼び出して、広告リクエストの発信元のプラットフォームを示す必要があります。たとえば、「Cool Ad Network」という、サードパーティの広告ネットワークは、Mobile Ads SDK に対するリクエストのメディエーションを行い、Analytics 用にリクエストにタグを付ける場合、以下のように行うことができます。

Objective-C

GADRequest *request = [GADRequest request];
request.requestAgent = @"Cool Ad Network"

Swift

let request = GADRequest()
request.requestAgent = "Cool Ad Network"

イベント通知を設定する

インプレッションなど、広告のライフサイクル イベントの通知を受け取るには、GADBannerViewDelegate を実装します。メディエーションを使用する際、このデリゲートは、メディエーション対象のすべてのネットワークのイベントの通知を自動的に受け取ります。たとえば、どの広告ネットワークのインプレッションも、GADBannerViewDelegate メソッドの adViewDidReceiveAd: でレポートされます。

広告イベントを登録する方法については、広告イベントガイドをご覧ください。

adNetworkClassName の値をチェックする

GADBannerViewadNetworkClassName プロパティをチェックすることもできます。これにより、現在のバナーをフェッチした広告ネットワークのクラス名が返されます。このプロパティは、adViewDidReceiveAd が呼び出されてからチェックできます。

Objective-C

- (void)adViewDidReceiveAd:(GADBannerView *)bannerView {
  NSLog(@"Banner adapter class name: %@", bannerView.adNetworkClassName);
}

Swift

func adViewDidReceiveAd(bannerView: GADBannerView!) {
  print("Banner adapter class name: \(bannerView.adNetworkClassName)")
}

インタースティシャルの場合も同様に、GADInterstitial プロパティ adNetworkClassName は、interstitialDidReceiveAd が呼び出されてからチェックできます。

Objective-C

- (void)interstitialDidReceiveAd:(GADInterstitial *)interstitial {
  NSLog(@"Interstitial adapter class name: %@", interstitial.adNetworkClassName);
}

Swift

func interstitialDidReceiveAd(ad: GADInterstitial!) {
  print("Interstitial adapter class name: \(ad.adNetworkClassName)")
}

AdMob から返された広告の場合、adNetworkClassNameGADMAdapterGoogleAdMobAds を返します。カスタム イベントでフェッチされた広告の場合、GADMAdapterCustomEvents を返します。

よくある質問

特定のネットワークとメディエーションを行いたいのですが、それに対応しているアダプタがない場合はどうすればよいですか?
カスタム イベントを使用して、独自のメディエーション アダプタを記述できます。
GADBannerViewDelegate はメディエーションでも動作しますか?
はい、すべてのメディエーション ネットワークで動作します。
次のバージョンのアプリ用で、メディエーション設定に新しいネットワークを追加することを検討しています。ネットワークを追加した場合、このネットワークを含まない現在のバージョンのアプリにどのように影響しますか?
SDK はアダプタがないことを検出し、安全に失敗します。 リクエストは、メディエーション ウォーターフォール内の次のネットワークに渡されます。
「<Google> Cannot find an ad network adapter with the name(s): (GADMSomeAdapter)」(<Google> 次の名前の広告ネットワーク アダプタが見つかりません: (GADMSomeAdapter))というエラー メッセージの意味を教えてください。
プロジェクトに、このクラスを含んでいるアダプタ ライブラリが不足している可能性があります。メディエーション対象にするすべての広告ネットワークについて、ネットワーク アダプタと SDK を追加する必要があります。

フィードバックを送信...