なんか、AdMobのコードが更新されたとかなんとか言って来るので、試験的に組み込み。
Admobの登録して、SDKをダウンロードして、
- GoogleAdMobAdsSDK
を面倒くさいのでフォルダごと組み込みました。そして、以下のフレームワークを追加。必要なフレームワークがちょっと減ってますね。
- AudioToolbox
- MessageUI
- SystemConfiguration
- iAd
iAdはOS3.xをターゲットにするならiAdをweklinkにする必要あり。
その他、ちょっといろいろ工夫してみました。ただいまテスト中・・・なんとか動いてるみたいだけど・・・
↓以下サンプルソース
viewController.h
... #import <iAd/iAd.h> #import "GADBannerView.h" ... @interface viewController :UiViewController < ... , ADBannerViewDelegate, GADBannerViewDelegate>{ ... GADBannerView *adMobAd; ADBannerView *bannerView; ... } ... - (void) startiAd; - (void) startAdMobAd; - (void) endAdMobAd; ... @end
viewController.m
#import "viewController.h" @implementation:viewController #define MY_BANNER_UNIT_ID @"publisher id" // 自分のパブリッシャーIDを設定 #define ADMOBAD_TESTING YES // リリース時はNOにする BOOL isEnableAdMob = NO; ... //======================================================== // 起動時設定 //======================================================== - (void)viewDidLoad { [super viewDidLoad]; ... //iAd(OS4.0以上) if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.0) { [self startiAd]; } else { [self startAdMobAd]; } ... } //======================================================== // メモリ解放 //======================================================== - (void)dealloc { [super dealloc]; ... //Admob if (isEnableAdMob) { adMobAd.delegate = nil; [adMobAd release]; } //iAd bannerView.delegate = nil; [bannerView release]; ... } ... ... ... ... #pragma mark iAd,Admob //********************************************************************** // iAd関連 //********************************************************************** //====================================================================== // iAD広告開始 //====================================================================== - (void) startiAd { NSLog(@"iAd:startiAd"); // iAd初期化 bannerView = [[ADBannerView alloc] init]; bannerView.delegate = self; // 広告サイズのiOSバージョン別設定 if (&ADBannerContentSizeIdentifierPortrait != nil) { bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait; }else { bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50; } // 初期は隠す bannerView.frame = CGRectMake(0.0, self.view.frame.size.height, bannerView.frame.size.width, bannerView.frame.size.height); [self.view addSubview:bannerView]; } //====================================================================== // iAD広告取得成功時 //====================================================================== - (void)bannerViewDidLoadAd:(ADBannerView *)banner{ NSLog(@"iAd:bannerViewDidLoadAd"); // AdMob非表示 [self endAdMobAd]; // iAdアニメーション表示 bannerView.frame = CGRectMake(0.0, self.view.frame.size.height, banner.frame.size.width, banner.frame.size.height); [UIView beginAnimations:@"BannerViewMoveOnScreen" context:NULL]; bannerView.frame = CGRectMake(0.0, self.view.frame.size.height - banner.frame.size.height, banner.frame.size.width, banner.frame.size.height); [UIView commitAnimations]; } //====================================================================== // iAD広告取得失敗時 //====================================================================== - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{ NSLog(@"iAd:didFailToReceiveAdWithError:%@", [error localizedDescription]); // Admob開始 [self startAdMobAd]; // iADアニメーション非表示 [UIView beginAnimations:@"BannerViewMoveOffScreen" context:NULL]; bannerView.frame = CGRectMake(0.0, self.view.frame.size.height, banner.frame.size.width, banner.frame.size.height); [UIView commitAnimations]; } //********************************************************************** // Admob関連 //********************************************************************** //====================================================================== // Admob広告開始 //====================================================================== - (void) startAdMobAd { if (!isEnableAdMob) { NSLog(@"AdMob:startAdMobAd:isEnableAdmob=%d", isEnableAdMob); // AdMob初期化 adMobAd = [[GADBannerView alloc] initWithFrame:CGRectMake(0.0, self.view.frame.size.height, GAD_SIZE_320x50.width, GAD_SIZE_320x50.height)]; adMobAd.adUnitID = MY_BANNER_UNIT_ID; // パブリッシャーID adMobAd.rootViewController = self; [self.view addSubview:adMobAd]; adMobAd.delegate = self; GADRequest *request = [GADRequest request]; request.testing = ADMOBAD_TESTING; // テストモード [adMobAd loadRequest:request]; isEnableAdMob = YES; } } //====================================================================== // Admob広告終了 //====================================================================== - (void) endAdMobAd { if (isEnableAdMob) { NSLog(@"AdMob:endAdMobAd:isEnableAdmob=%d", isEnableAdMob); // AdMobアニメーション非表示 [UIView beginAnimations:@"AdMobBannerMoveOffScreen" context:NULL]; adMobAd.frame = CGRectMake(0.0, self.view.frame.size.height, GAD_SIZE_320x50.width, GAD_SIZE_320x50.height); [UIView commitAnimations]; // Admobリリース [adMobAd removeFromSuperview]; adMobAd.delegate = nil; [adMobAd release]; isEnableAdMob = NO; } } //====================================================================== // Admob広告取得成功時 //====================================================================== - (void)adViewDidReceiveAd:(GADBannerView *)adMobView { NSLog(@"Admob:adViewDidReceiveAd"); // AdMobアニメーション表示 adMobAd.frame = CGRectMake(0.0, self.view.frame.size.height, adMobView.frame.size.width, adMobView.frame.size.height); [UIView beginAnimations:@"AdMobBannerMoveOnScreen" context:NULL]; adMobAd.frame = CGRectMake(0.0, self.view.frame.size.height - adMobView.frame.size.height, adMobView.frame.size.width, adMobView.frame.size.height); [UIView commitAnimations]; } //====================================================================== // Admob広告取得失敗時 //====================================================================== - (void)adView:(GADBannerView *)adMobView didFailToReceiveAdWithError:(GADRequestError *)error { NSLog(@"Admob:didFailToReceiveAdWithError:%@", [error localizedDescription]); } @end