iAdの実装方法を調べたのでご紹介します。
1、iAd.frameworkを追加
2、iAdを表示するクラスの.hを実装#import <UIKit/UIKit.h>
#import <iAd/iAd.h>
@interface iAdSampleViewController : UIViewController <ADBannerViewDelegate> {
BOOL isHiddenBanner_; // バナー表示フラグ
}
3、続きまして.mを実装
// 広告ロード完了のデリゲート
- (void)bannerViewDidLoadAd:(ADBannerView *)banner {
// バナー表示
if (isHiddenBanner_) {
[UIView beginAnimations:nil context:nil];
banner.frame = CGRectOffset(banner.frame, 0.0, 50.0);
[UIView commitAnimations];
isHiddenBanner_ = NO;
}
}
// 広告ロード失敗のデリゲート
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
// バナー非表示
if (!isHiddenBanner_) {
[UIView beginAnimations:nil context:nil];
banner.frame = CGRectOffset(banner.frame, 0.0, -50.0);
[UIView commitAnimations];
isHiddenBanner_ = YES;
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
// 初期化:バナー非表示
isHiddenBanner_ = YES;
// バナーView生成
ADBannerView *bannerView = [[ADBannerView alloc] initWithFrame:CGRectMake(0.0, -50.0, 320.0, 50.0)];
bannerView.delegate = self;
bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
bannerView.backgroundColor = [UIColor clearColor];
[self.view addSubview:bannerView];
}
これで表示すると、、

ぴょこっと表示するアニメーションいい感じですね。
ちなみにバナーの表示タイプは2つADBannerContentSizeIdentifierPortrait:320×50
ADBannerContentSizeIdentifierLandscape:480×32
以前は以下の2つが使用されてたみたいだけど、
今はコンパイル時にdeprecatedってwarning出ます。
非推奨というか廃止されるのかな。
ADBannerContentSizeIdentifier320x50
ADBannerContentSizeIdentifier480x32
今回は使用していないのですが、
他にもデリゲートメソッドがあるのでご紹介。
// 広告ロード前に呼ばれる
- (void)bannerViewWillLoadAd:(ADBannerView *)banner;
// バナータップ後に呼ばれる(YES返すとモーダル画面が表示される)
- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave;
// モーダル画面が閉じた後に呼ばれる- (void)bannerViewActionDidFinish:(ADBannerView *)banner;
どんなアプリかにもよるけど、
アプリ内で処理中のものを制御するのに使う機会ありそうだな。
ちなみにロードに失敗した時の処理は必ず入れないとリジェクトされるらしい。。
真っ白画面はかわいくないし不審だもんね。