ここ最近、AdmobのANEを作ってFlash Builderでアプリを制作することを考えていましたが、一旦保留とすることにしました。残念ながら、AIR3.4とFlashBuilder4.6はiOS6に対応していません。ANEを作成する上でも、幾つかの問題にぶつかってしまいました。
iOS6に対応したAIR3.5?とFlashBuilder4.7が出るまで、ネイティブObjective-C+cocos2dでアプリ開発を進めることにしました。
早速、cocos2dを使ったプロジェクトにAdmobを実装してみました。
サンプルコード:
cocos2d v2.xのテンプレート「cocos2d iOS」で作成したプロジェクトをベースにしています。
編集したファイルは、「HelloWorldLayer.h」と「HelloWorldLayer.m」の2つのファイルだけです。
Admobのためのライブラリ(フレームワーク)の追加やLinkerFlagの設定は、
Objective-C:iPhoneアプリにAdMobを実装
と同じです。
1 2 3 4 5 6 7 8 9 10 11 |
#import <GameKit/GameKit.h> #import "cocos2d.h" #import "GADBannerView.h" @interface HelloWorldLayer : CCLayer <GKAchievementViewControllerDelegate, GKLeaderboardViewControllerDelegate, GADBannerViewDelegate> { } +(CCScene *) scene; @end |
3行目:ヘッダファイル(GADBannerView.h)を追加
7行目:イベントを拾うためにGADBannerViewDelegateを追加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
(省略) @implementation HelloWorldLayer { GADBannerView *gadbanner_; } (省略) -(id) init { if( (self=[super init]) ) { CCLabelTTF *label = [CCLabelTTF labelWithString:@"Hello World" fontName:@"Marker Felt" fontSize:64]; CGSize size = [[CCDirector sharedDirector] winSize]; label.position = ccp( size.width /2 , size.height/2 ); [self addChild: label]; CGRect rect = CGRectMake(0, size.height - 50, 320, 50); gadbanner_ = [[GADBannerView alloc] initWithFrame:rect]; gadbanner_.adUnitID = @"YOUR*AD*UNIT*ID"; gadbanner_.rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController]; gadbanner_.delegate = self; [[[CCDirector sharedDirector] view] addSubview:gadbanner_]; GADRequest *request = [GADRequest request]; request.testing = NO; [gadbanner_ loadRequest:request]; (省略) return self; } (省略) -(void) adViewDidReceiveAd:(GADBannerView *)view { printf("adViewDidReceiveAd\n"); } |
4行目:Admobのポインタ型変数定義
15-24行目:画面下位置にバナーを生成し、必要な項目を設定。広告をリクエスト。
29行目:バナーを受信した際のイベント処理
実行結果:
実際には、常に表示されるレイヤーを用意して貼り付けるか、シーンごとに表示を制御するか、などなどを考える必要がありますね。
コメントを残す
コメントを投稿するにはログインしてください。