なんか、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