いろいろRootViewControllerがなかったりと、2.0になって
わけわからんことが多かったので、
参考になれば幸いです。
もう見ていると思うけど、
参考サイト
warning banner obscuredなんちゃらってerrorが出た時の対処法
情報元は公式サイトで。
ただ、公式サイトだけではエラーが出るので、なかなか苦労しました。笑
iAd.frameworkを追加
新たにiAdSingleton.h とm ファイルをcocos2dで追加。
iAdSingleton.h
#import <Foundation/Foundation.h">
#import "cocos2d.h"
#import <iAd/iAd.h">
@interface iAdSingleton : NSObject {
ADBannerView *bannerView;
UINavigationController *navControllers;
}
@property (nonatomic, retain) ADBannerView *bannerView;
+(iAdSingleton *)sharedInstance;
-(void)createAdView;
@end
iAdSingleton.m
#import "iAdSingleton.h"
@implementation iAdSingleton
@synthesize bannerView;
+(iAdSingleton *)sharedInstance{
static iAdSingleton *sharedHelper;
if(!sharedHelper){
sharedHelper = [[self alloc] init];
}
return sharedHelper;
}
-(void) createAdView{
static NSString * const kADBannerViewClass = @"ADBannerView";
if (NSClassFromString(kADBannerViewClass)!= nil) {
self.bannerView = [[ADBannerView alloc] initWithFrame:CGRectZero];
[self.bannerView setRequiredContentSizeIdentifiers:[NSSet setWithObjects:ADBannerContentSizeIdentifierPortrait, nil]];
self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
[self.bannerView setDelegate:self];
[navControllers.view addSubview:self.bannerView];
[self moveBannerOffScreen];
}
}
//バナーの呼び出しに成功した場合(moveBannerOnScreenにとぶ)
-(void)bannerViewDidLoadAd:(ADBannerView *)banner{
[self moveBannerOnScreen];
}
//完全にロードされたらまずはじめに画面に呼び出される
-(void) moveBannerOffScreen{
// CGSize windowsize = [[CCDirector sharedDirector] winSize];
//#warning the size of the ads needs to be used according iphone or ipad windowのサイズで変更される
[self.bannerView bringSubviewToFront:bannerView];
bannerView.frame = CGRectMake(0.0, 0.0, bannerView.frame.size.width, bannerView.frame.size.height);
// self.bannerView.frame = CGRectMake(0, windowsize.height, 320, 50);
// NSLog(@"bannerがスクリーンに表示されます");
}
//スクリーンに表示される
-(void) moveBannerOnScreen{
[UIView beginAnimations:@"BannerViewIntro" context:NULL];
self.bannerView.frame = CGRectZero;
[UIView commitAnimations];
// NSLog(@"bannerがスクリーンに表示されます2");
}
//ユーザーがバナーをおしたときに起動される
-(BOOL) bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave{
// NSLog(@"banner全画面で表示されます");
return YES;
}
//バナーを閉じた後、画面はポーズされていて、それがまた動き出す
-(void)bannerViewActionDidFinish:(ADBannerView *)banner{
// NSLog(@"iAd banner is closed");
}
//バナーをロードできなかったら、バナーをスクリーンから非表示にする必要がある(appleが必要としている)
-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
// NSLog(@"banner got error");
[UIView beginAnimations:@"animateAdBannerOff" context:NULL];
[self moveBannerOffScreen];
}
//deallocはARCを使っているため必要ないです
@end
AppDelegate.h内にimportと ADBannerViewDelegateを追加
#import <UIKit/UIKit.h>
#import "cocos2d.h"
#import <iAd/iAd.h>
@interface AppController : NSObject
{
UIWindow *window_;
UINavigationController *navController_;
CCDirectorIOS *director_; // weak ref
}
@property (nonatomic, retain) UIWindow *window;
@property (readonly) UINavigationController *navController;
@property (readonly) CCDirectorIOS *director;
@end
AppDelegate.mm内にiAdSingleton.hをimportし、以下を- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions内に追加
//すでに上の2つが入っていれば、下の2行をこの順番どおりで設置
// [window_ setRootViewController:navController_];
// [window_ makeKeyAndVisible];
// [[iAdSingleton sharedInstance] createAdView];
// [navController_.view addSubview:[[iAdSingleton sharedInstance] bannerView]];
以上。コメントアウト部分は適宜はずしてくださいー。
お力になれれば幸いです。