読者です 読者をやめる 読者になる 読者になる

49hack

見習いエンジニアが魔法使いになるまで

iAdとAdMobを切り替えるAdMobメディエーションを実装する

objective-c

AdMobメディエーションを使うことで複数のアドネットワークを切り替えることができます。
AdMobの設定は各自で行なってください。
今回は一般的なiAdとAdMobの2種類の広告を扱います。
なお、ARC対応の場合はOther Linker Flags-ObjCを追加する必要があります。

SDK, フレームワークのインストール

必要なフレームワークは以下のとおり。
フレームワークが足りないとエラーが頻発するので注意してください。

  • SystemConfiguration.framework
  • MessageUI.framework
  • AudioToolbox.framework
  • iAd.framework
  • StoreKit.framework
  • AdSupport.framework

ダウンロードしたGoogleAdMobAdsSdkiOS-6.4.2から以下のソース、アダプターを
ドラッグ&ドロップでプロジェクトにコピーします。

  • GADAdMobExtras.h
  • GADAdNetworkExtras.h
  • GADAdSize.h
  • GADBannerView.h
  • GADBannerViewDelegate.h
  • GADInterstitial.h
  • GADInterstitialDelegate.h
  • GADRequest.h
  • GADRequestError.h
  • libAdapterIAd.a
  • libGoogleAdMobAds.a

libAdapterIAd.aはこちらからダウンロードできます。

実装

.hファイル

// BannerExampleViewController.h

// SDK から GADBannerView の定義をインポートする
#import "GADBannerView.h"

// デリゲートを指定して広告取得成功時, 失敗時の挙動も記述する
@interface BannerExampleViewController : UIViewController<GADBannerViewDelegate>{
  // インスタンス変数として 1 つ宣言する
  GADBannerView *_bannerView;
}

@end

.mファイル

// BannerExampleViewController.m

#import "BannerExampleViewController.h"

@implementation BannerExampleViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  // 画面下部に標準サイズのビューを作成する
  _bannerView = [[GADBannerView alloc]
                   initWithFrame:CGRectMake(0.0,
                                            self.view.frame.size.height -
                                            GAD_SIZE_320x50.height,
                                            GAD_SIZE_320x50.width,
                                            GAD_SIZE_320x50.height)];

  // ここで、AdMobパブリッシャーID ではなく AdMobメディエーションID を設定する
  _bannerView.adUnitID = MY_MEDIATION_ID;

  // ユーザーに広告を表示した場所に後で復元する UIViewController をランタイムに知らせて
  // ビュー階層に追加する。
  _bannerView.rootViewController = self;
  _bannerView.delegate = self;
  [self.view addSubview:_bannerView];

  // 一般的なリクエストを行って広告を読み込む。
  [_bannerView loadRequest:[GADRequest request]];
}

- (void)viewDidUnload {
  [_bannerView release];
}

- (void)dealloc {
  [super dealloc];
}

// 広告の取得が成功したとき
-(void)adViewDidReceiveAd:(GADBannerView *)view
{
    //... 処理
}

// 広告の取得が失敗したとき
-(void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestError *)error
{
    //... 処理
}

@end

次回は他の広告(i-mobileやAdLantis, AppBank Networkなど)を追加する手順を紹介できればと思います。

参考