2014年3月15日土曜日

AdMobメディエーションで広告(Nend,iAd,AdMob)を切り替える方法

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のサイトで設定

アプリを新規追加


新しいアプリを収益化


広告ユニットを追加


新しい広告ユニットを追加

広告ユニットIDを控えておく(実装時に必要)


広告ネットワークの設定


メディエーションを編集

新しい広告ネットワーク

iAdを追加

Nendを追加(API KeyとSpot IDを入力)

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
※Deployment TargetがiOS6未満の場合はAdSupport.frameworkの設定をRequiredからOptionalに切り替える必要がある

Other Linker Flagsの追加


PROJECT→BuildSettings→Linking→Other Linker Flagsに「-ObjC」を追加


コーディング


ViewController.h
================================================

// 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メディエーションを組み込んでおくのが無難なのではないでしょうか。




『パズ銭』はハマり過ぎ注意な中毒者続出のパズルゲーム

パズ銭 ~スワイプで両替パズル

2 件のコメント:

  1. 突然すいません。
    まいどブログを楽しく拝見させていただいております。
    Admobメディエーションについて質問させていただきます。
    私は昔Admobメディエーションを使っていましたが、配信比率設定が使えなくなってしまったらしく、現在もAdmobメディエーションが使われているのか疑問に思いました。
    現在もなおAdmobメディエーションが開発者の間で主流なのでしょうか?
    それともDFPスタンダードやその他のSSPに乗り換えているのでしょうか?

    返信削除
  2. 突然すいません。
    まいどブログを楽しく拝見させていただいております。
    Admobメディエーションについて質問させていただきます。
    私は昔Admobメディエーションを使っていましたが、配信比率設定が使えなくなってしまったらしく、現在もAdmobメディエーションが使われているのか疑問に思いました。
    現在もなおAdmobメディエーションが開発者の間で主流なのでしょうか?
    それともDFPスタンダードやその他のSSPに乗り換えているのでしょうか?

    返信削除