cocos2dでiAdとAdmobを表示

Cocos2dでiAdとAdmobを切り替えて表示するのはどうやるのかなと調べていたら、こんなものがありました。
GitHub - jandrad/AdRootViewController: RootViewController replacement for Cocos2d that supports iAds and AdMob.

簡単にできそうだったので、やってみました。

Admobの設定はこちらを参考に。
https://developers.google.com/mobile-ads-sdk/docs/ios/fundamentals

iAdとAdmobに必要なライブラリを追加しておきます。

AdRootViewControllerをプロジェクトに追加

Admobのクラスをプロジェクトに追加

cocos2dのプロジェクトではRootViewControllerが自動的に作成されますが、これを
AdRootViewControllerに置き換えます。
AppDelegate.h

@class AdRootViewController;

@interface AppDelegate : NSObject <UIApplicationDelegate> {
	UIWindow			*window;
	AdRootViewController	*viewController;
}

@property (nonatomic, retain) UIWindow *window;
@property (nonatomic,retain) AdRootViewController *viewController;

@end

AppDelegate.m

#import "AdRootViewController.h"
...
@synthesize viewController;
...
viewController = [[AdRootViewController alloc] initWithNibName:nil bundle:nil];

AdmobのパブリッシャーIDを指定します。
AdRootViewController.m

#define ADMOB_PUBLISHER_ID @"XXXXXXXXXXXXXXX"

ここまでで準備は終了です。

実際に使うときは、CCLayerに表示させるのがいいのではないかと思います。

HelloLayer.m

		AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
		[appDelegate.viewController addBannerAd];



画面を回転させてもきちんと表示されます。

基本はiAdが優先で、広告取得しっぱいしたときはAdmobが表示されるようです。
(シミュレーターで意図的にその状況を発生させるにはどうすればいいのだろう・・・)


2012/07/15 追記
動作確認したバージョン記載がありませんでした。
・cocos2d 1.0.1
・admob 6.0.3
Xcode 4.3.3
AdmobのパブリッシャーID指定が抜けていたので追加しました。