iPhone(iOS)アプリにAdMobメディエーションを実装し広告(Nend,iAd,Admob)を切り替える方法
iPhone(iOS)アプリには広告を表示することができます。
広告には様々な種類があり、国内だけのモノや海外でも使えるモノもあります。
これらの広告を切り替えて表示したいと思ったことありませんか?
AdMobメディエーションを使うと簡単にいくつかの広告を切り替えて表示することができます。
例としてAdMob,iAd,Nendを切り替えて表示する方法をご紹介します。
前提
この実装は2014/3/15時点の最新(ver6.8.0)、Xcode5.1でのものです。
事前準備
まず、Admob、Nendに申し込み、iTunes ConnectでiAdを有効にしておきます。
(iAdの有効化は実装後でもOKです)
AdMob
Nend
※API KeyとSpot IDを控えておく
メディエーションの設定
AdMobのサイトで設定
アプリを新規追加
広告ユニットを追加
新しい広告ユニットを追加
広告ネットワークの設定
新しい広告ネットワーク
iAdを追加
CPMの値で広告の優先順位を設定
優先順は国別の設定も可能
例えばNendは国内向けなので、日本以外は無効の設定にする
ダウンロード
AdmobメディエーションSDKのダウンロード
iAdアダプターのダウンロード
Nend SDKのダウンロード
Nendのサイトでダウンロード
実装
サンプルとして「Single View Application」へ実装します。
基本的には以下のGoogleのドキュメントのやり方で良いのですが、抜けがあったりするので注意してください。
ファイル追加
ダウンロードしたファイルをプロジェクトに追加
サンプルとしてこのようなディレクトリ階層にしてますが、以下のファイルが追加されていればどのような形でも問題ありません。
AdMob
- GADAdMobExtras.h
- GADAdNetworkExtras.h
- GADAdSize.h
- GADBannerView.h
- GADBannerViewDelegate.h
- GADInterstitial.h
- GADInterstitialDelegate.h
- GADRequest.h
- GADRequestError.h
- libGoogleAdMobAds.a
AdMob/Mediation
- GADCustomEventBanner.h
- GADCustomEventBannerDelegate.h
- GADCustomEventExtras.h
- GADCustomEventInterstitial.h
- GADCustomEventInterstitialDelegate.h
- GADCustomEventRequest.h
AdMob_iAdAdapter
- libAdapterIAd.a
Nend
- NADView.h
- libAdapterNend.a
- libNendAd.a
ライブラリ追加
TARGETS→General→Linked Frameworks and Libraries→+
以下のライブラリを追加
(ファイルを追加した時点で既に追加されているモノもあり)
- AdSupport.framework ※
- AudioToolbox.framework
- AVFoundation.framework
- CoreGraphics.framework
- MessageUI.framework
- StoreKit.framework
- SystemConfiguration.framework
- CoreTelephony.framework (サイトに書かれていない)
- iAd.framework (iAdで必要)
- Security.framework(Nendで必要)←抜けてました(4/21追記)
(以下は既に追加されているはず)
- libGoogleAdMobAds.a
- libAdapterIAd.a
- libAdapterNend.a
- libNendAd.a
Other Linker Flagsの追加
PROJECT→BuildSettings→Linking→Other Linker Flagsに「-ObjC」を追加
コーディング
================================================ // SDK から GADBannerView の定義をインポートする #import "GADBannerView.h" @interface ViewController : UIViewController { // インスタンス変数として 1 つ宣言する GADBannerView *bannerView_; } ================================================
ViewController.m
================================================ - (void)viewDidLoad { [super viewDidLoad]; //バナーユニットID NSString *MY_BANNER_UNIT_ID = @"ca-app-pub-1234567890123456/1234567890"; // 画面上部に標準サイズのビューを作成する // 利用可能な広告サイズの定数値は GADAdSize.h で説明されている bannerView_ = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner]; // 広告ユニット ID を指定する bannerView_.adUnitID = MY_BANNER_UNIT_ID; // ユーザーに広告を表示した場所に後で復元する UIViewController を // ランタイムに知らせてビュー階層に追加する bannerView_.rootViewController = self; [self.view addSubview:bannerView_]; // 一般的なリクエストを行って広告を読み込む [bannerView_ loadRequest:[GADRequest request]]; } ================================================
実行
画面上部に広告が表示される
おわりに
事前準備の申し込みが面倒だったり、設定や実装が大変そうに見えますが、一度やってしまえば後はコピペでいけるので楽になります。
ある広告会社がトラブルで広告が配信されなくなっても、メディエーションで切り替えるようにしておけば他の会社の広告が表示されるので保険としても役立ちます。
特にこの広告でなければダメというこだわりが無いのなら、とりあえずAdMobメディエーションを組み込んでおくのが無難なのではないでしょうか。
突然すいません。
返信削除まいどブログを楽しく拝見させていただいております。
Admobメディエーションについて質問させていただきます。
私は昔Admobメディエーションを使っていましたが、配信比率設定が使えなくなってしまったらしく、現在もAdmobメディエーションが使われているのか疑問に思いました。
現在もなおAdmobメディエーションが開発者の間で主流なのでしょうか?
それともDFPスタンダードやその他のSSPに乗り換えているのでしょうか?
突然すいません。
返信削除まいどブログを楽しく拝見させていただいております。
Admobメディエーションについて質問させていただきます。
私は昔Admobメディエーションを使っていましたが、配信比率設定が使えなくなってしまったらしく、現在もAdmobメディエーションが使われているのか疑問に思いました。
現在もなおAdmobメディエーションが開発者の間で主流なのでしょうか?
それともDFPスタンダードやその他のSSPに乗り換えているのでしょうか?