だいたい47度

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop

意外と簡単だったiAdとAdmob設定(2) cocos2dで広告付きアプリ

前回はiAdをアプリに組み込みました。ただ、iAdは表示率が悪いという話も聞くので、iAdが表示されなかった場合にGoogleのやっているAdmobが表示されるようにします。

Admobの登録
公式サイトから「Admobに登録する」ボタンを押して、登録開始です。Googleアカウントでログインし、順次登録していきます。関係ないですが、公式サイトの動画カッコイイですね。

登録で引っかかるところは、必須項目に「州」があるところかと思いますが、ここは都道府県を追加すればOKです。表記の順番がちょっと変ですが、とりあえず他はあまり困らないかと。登録が終わるとメールが届きます。

続いて金銭授受方法を登録します。これはアプリを登録しようとしたりするとでてくる画面で行います。具体的には「サイト及びアプリケーション」タブで「サイト/アプリケーションの追加」ボタンを押すなどすると画面が現れます。授受方法としては、銀行取引とPaypalが選べます。

ここでPaypalを選びたいです。というのも銀行取引は取引手数料が2500円程度とられるからです。全然儲けにならない……。よってどんどん話が脇道にそれていきますが、paypalの登録をします。

Paypalは個人の場合プレミアで登録する必要があるのですが、最初パーソナルとビジネスの2つしか選択肢がありません(以前は最初からプレミアが選べたみたいですけど)。そこでパーソナルで登録してからプレミアにアップグレードする形になります。プレミアへのアップグレードには写真付き身分証明書をアップロードし、数日待つ必要があります。待っている間にAdmobにPaypalアカウントを登録しておきましょう。

admobにアプリの情報を適当に書き込んで登録します。サイト及びアプリケーションにアプリが表示されるようになるので、「設定を管理」を押して画面に出てくるパブリッシャーIDを見ておきます。

Admobの準備
Google Developersのサイトを元にSDKの準備をします。ここでは英語サイトを使います。現在日本語サイトの方法で行うとエラーが出ます。

Downloadsから最新のファイルをダウンロードしてきて、readmeとAdd-onsフォルダ以外をプロジェクトにaddします。Add-onsフォルダを追加すると、フォルダ内のGoogle Analyticsサンプルプロジェクトによってo-linker errorが出ます。

次に、前回と同様にSDKフレームワークを6つ追加します。日本語サイトだと4つになっている罠があるので注意して下さい。4つしかいれないと、ここでもo-linker errorが出ちゃいます。

Admobの実装
ビルドが通ったら実装開始です。といっても、前回同様、広告用のレイヤにおいてviewをaddしていくだけです。

まずはiAdを一度無視して、admobが表示できるようにしましょう。iAdとほぼ同じです。以下で.hと.m全文になります。読み込み部分だけをloadAdmobViewRequestという関数で切り出しました。loadAdmobViewRequest内ではテスト広告を表示する端末を指定出来ます。

//AdLayer.h
#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "GADBannerView.h"

@interface AdLayer : CCLayer<GADBannerViewDelegate>
+ (id)layer;
@end

//AdLayer.m
@implementation AdLayer{
    GADBannerView* _admobView;
}

+ (id)layer{
    return [[[self alloc] initLayer] autorelease];
}

- (id)initLayer {
    if (self = [super init]) {
        _admobView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
        _admobView.adUnitID = @"ここに上述したパブリッシャーID";
        _admobView.rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController];
        [[[CCDirector sharedDirector] view] addSubview:_admobView];
        _admobView.delegate = self;
        [self loadAdmobViewRequest];
    }
    return self;
}

- (void)dealloc{
    _admobView.delegate = nil;
    [_admobView removeFromSuperview];
    [_admobView release];
    [super dealloc];
}

- (void)loadAdmobViewRequest {
    GADRequest *request = [GADRequest request];
    //以下の端末ではテスト広告をリクエスト
    request.testDevices = [NSArray arrayWithObjects:
                            GAD_SIMULATOR_ID,// シミュレータ
                            nil];
    [_admobView loadRequest:request];
}

これだけで広告が表示されています。簡単。もっと色々やりたければ、顧客情報を取得して適した広告を表示するようにすることもできるみたいです。

iAdとAdmobを組み合わせる
最後にiAdが取得できなかったときにadmobを表示するようにしましょう。といっても単純で、loadAdmobViewRequestをinitから外して、前回作成したbannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)errorに入れるだけです。

//iAd広告取得失敗時の処理
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
    CCLOG(@"iAd load is failed and try to get Admob ads");
    [self loadAdmobViewRequest];
}

どうやってiAdのロード失敗をテストしようかな、と思っていたのですが、やってみると結構失敗するので、普通に何回かみているときちんと動作していることがわかります。

更にadmobもコケた時用に、自社広告を表示するようにしようと思っています。オフラインのときとかね。GADBannerViewDelegateの- (void)adView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(GADRequestError *)error を上記の呼び出しと同様に使えばOKでしょう。
関連記事
スポンサーサイト

PageTop

コメント


管理者にだけ表示を許可する
 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。