メディエーションは凄い。
メディエーションはやるべき。
メディエーションは儲かる。
などなど、メリットはよく聞こえてきますが、いざ実装となるとなかなか例が出てこなくて困りました。
実装を終えて振り返ってみると、工数は少なかったですが迷うことは多かった印象です。
というわけで、これからメディエーションを実装する人が迷わないように、最短で実装できる手順を書いてみました。参考になればこれ幸いです。
0. 実装をはじめる前に
実装をはじめる前に知っておいてもらいたいのは、Ad Generationのメディエーションを実装する上で、GADBannerView
やGADRequest
に何もコードを足す必要は無いということです。(もちろん、DFPBannerViewやDFPRequestの場合でも)
基本的には、必要な2つのSDKをプロジェクトに追加するだけです。
1. SDKをインストールする
まず、Ad Generation SDK
をインストールしましょう。CocoaPodsが使えます。
① Podfileに以下のコードを追加
pod 'AdGeneration'
② ターミナルから以下のコマンドを叩く
pod install
2. メディエーションSDKもインストールする
Ad Generation AdMobメディエーション iOS SDK
もインストールする必要があります。
これはCocoaPodsでインストールできないため、自力でプロジェクトに追加する必要があります。
① 以下のURLから、ADG-AdMobMediation-iOS.zip
をダウンロードする。
https://github.com/AdGeneration/ADG-AdMobMediation-iOS-SDK/releases
② zipを解凍して、以下の3つのファイルをプロジェクトの適当な場所にドラッグ&ドロップする。
ADGAdMobMediation.h
ADGAdMobInterstitialMediation.h
libADGAdMobMediationX.X.X.a
③ Bulid Setting > Other Linker Flagsに設定を追加する
XcodeのプロジェクトのBuild Settingsをクリックし、検索窓にOther Linker Flags
と打ち込み、Other Linker Flags欄をダブルクリックして-ObjC
を追加する。
以上で、アプリ側の実装は完了です。
次は、AdMobもしくはGoogle Ad Managerの管理画面側の設定をしましょう。
3. 管理画面に設定を施す
Ad Generationのリファレンスを見ると、AdMobしか対応していないように思えますが、Google Ad Managerにも対応しています。
また、AdMobとGoogle Ad Managerは見た目は違いますが、入力する項目は以下で共通です。
項目 | 内容 |
---|---|
ターゲットeCPM | (自分の)アドジェネのレポートに出ているeCPMの1.2〜2倍が推奨値(※低すぎると広告が出ないので注意) |
Label | AdGeneration |
Class Name | ADGAdMobMediation |
Parameter | AdGeneration管理画面で設定した広告枠のid |
頻繁にUIが変わるのでスクショは割愛しますが、以下が各メディエーション設定画面までの道のりです。↓↓
AdMobの場合
トップページ > メディエーション > すべてのアプリバナー > (広告ソース)カスタムイベントを追加 > メディエーション設定画面
Google Ad Managerの場合
トップページ > 配信 > 収益グループ > 設定する収益グループ > 収益パートナーを追加 > メディエーション設定画面
4. 実装完了
あとは、Ad Generaionの広告が表示されるのを確認できれば実装完了です。
おまけ. GADBannerView.adNetworkClassNameが実装確認に便利
実装確認といってもなかなか見分けづらいと思います。
さらに、Googleの広告を100%カットすることは出来ません。(アドジェネのターゲットeCPMを10,000円に設定しても出てきます。)なので、確認作業を目でやろうとすると結構骨が折れることになります。
そんな時は、GADBannerViewのプロパティ adNetworkClassName
を使いましょう。これは広告がGoogle経由のものか、メディエーション経由のものかを教えてくれるもので、以下のような文字列を出力します。
Google広告の場合 | メディエーション広告の場合 |
---|---|
GADMAdapterGoogleAdMobAds | GADMAdapterCustomEvents |
GADBannerViewDelegate
のadViewDidReceiveAd(_ bannerView: GADBannerView)
のタイミングとかで、ログに仕込んでおけば確認しやすいと思います。
extension ViewController: GADBannerViewDelegate {
func adViewDidReceiveAd(_ bannerView: GADBannerView) {
if let network = bannerView.responseInfo.adNetworkClassName {
print("AdNetworkClassName: \(network)")
}
}
}
参考
Banner_Ad_iOS · AdGeneration/SDK Wiki
https://github.com/AdGeneration/sdk/wiki/Banner_Ad_iOS
AdMobMediation_Banner_Interstitial_Ad_iOS · AdGeneration/SDK Wiki
https://github.com/AdGeneration/sdk/wiki/AdMobMediation_Banner_Interstitial_Ad_iOS
Mediation | Mobile Ads SDK for iOS | Google Developers
https://developers.google.com/ad-manager/mobile-ads-sdk/ios/mediation/