現在開発中のiOSアプリに広告を入れようとする際、その方法やメディエーションはいくつか選択肢があります。
その中でもApple純正メディエーションiAdの導入方法を今回はご紹介したいと思います。
iAdって何?と思われた方は下記リンクを御覧ください。
http://ja.wikipedia.org/wiki/IAd
- 前提:SingleViewApplicationを選択して作成したプロジェクトであること
1.プロジェクトにiAdフレームワークを追加
- 左のツリー表示から青いプロジェクトファイルを選択
- Linked Frameworks and Librariesにて『+』ボタンをクリック
- 現れたウィンドウ上の検索パネル「iAd」と検索し、Addボタンで追加
2.ViewController.h に 2点追加
#import <iAd/iAd.h>
<ADBannerViewDelegate>
こんな形になります。
ViewController.h
#import <UIKit/UIKit.h>
#import <iAd/iAd.h>
@interface ViewController :UIViewController
@end
3.メンバ変数 _adView を追加
ViewController.m
#import "ViewController.h"
@interface ViewController ()
{
ADBannerView *_adView; //<-追加
}
@end
4.ViewDidLoadの中にバナーを画面上部に隠しておく形で設置するコードを記述
ViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
//初期化
_adView = [[ADBannerView alloc] init];
//場所を決定
_adView.frame = CGRectMake(0, -_adView.frame.size.height, _adView.frame.size.width, _adView.frame.size.height);
_adView.alpha = 0.0;
_adView.delegate = self;
//画面本体に追加
[self.view addSubview:_adView];
}
5.バナー表示が成功したら発動するDelegateメソッドbannerViewDidLoadAdをViewDidLoad下に追加
ViewController.m
//バナーが表示される時発動するメソッド
-(void)bannerViewDidLoadAd:(ADBannerView *)banner
{
[UIView beginAnimations:@"animateAdBannerOn" context:nil];
[UIView setAnimationDuration:0.3];
banner.frame = CGRectOffset(banner.frame, 0, 20);
banner.alpha = 1.0;
[UIView commitAnimations];
}
6.バナー表示が失敗した時に発動するDelegateメソッドdidFailToReceiveAdWithErrorもbannerViewDidLoadAd下に追加
ViewController.m
//バナー表示でエラーが発生した場合
-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
[UIView beginAnimations:@"animateAdBannerOff" context:nil];
[UIView setAnimationDuration:0.3];
banner.frame = CGRectOffset(banner.frame, 0, -CGRectGetHeight(banner.frame));
banner.alpha = 0.0;
[UIView commitAnimations];
}
7.バナーが画面上に表示されているか否かを判別するフラグ_isVisibleをメンバ変数で用意
ViewController.m
#import "ViewController.h"
@interface ViewController ()
{
ADBannerView *_adView;
BOOL _isVisible; //追加
}
@end
@implementation ViewController
8. viewDidLoadではまだバナー表示されていないためNOを設定しておく
ViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
//初期化
_adView = [[ADBannerView alloc] init];
//場所を決定
_adView.frame = CGRectMake(0, -_adView.frame.size.height, _adView.frame.size.width, _adView.frame.size.height);
_adView.alpha = 0.0;
_adView.delegate = self;
//画面本体に追加
[self.view addSubview:_adView];
//まだ表示されていない
_isVisible = NO; //←追加行1☆☆☆
}
9. bannerViewDidLoadAdに_isVisibleを判別し、表示されていない時だけ表示する処理が実行されるようなif文を追加
- 表示処理後は_isVisible = YESにセット
ViewController.m
//バナーが表示される時発動するメソッド
-(void)bannerViewDidLoadAd:(ADBannerView *)banner
{
if(!_isVisible){ //←追加行1☆☆☆
[UIView beginAnimations:@"animateAdBannerOn" context:nil];
[UIView setAnimationDuration:0.3];
banner.frame = CGRectOffset(banner.frame, 0, 20);
banner.alpha = 1.0;
[UIView commitAnimations];
//表示したのでisVisibleをYESにする
_isVisible = YES; //←追加行2☆☆☆
} //←追加行3☆☆☆
}
10. didFailToReceiveAdWithErrorに_isVisibleを判別し、表示されている時だけ非表示にする処理が実行されるようなif文を追加
ViewController.m
//バナー表示でエラーが発生した場合
-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
//バナーが表示されていたら、非表示にする
if (_isVisible) { //←追加行1☆☆☆
[UIView beginAnimations:@"animateAdBannerOff" context:nil];
[UIView setAnimationDuration:0.3];
banner.frame = CGRectOffset(banner.frame, 0, -CGRectGetHeight(banner.frame));
banner.alpha = 0.0;
[UIView commitAnimations];
//非表示したのでisVisibleをNOにする
_isVisible = NO; //←追加行2☆☆☆
} //←追加行3☆☆☆
}
NexSeedでは、プログラミングと英語を学べる「エンジニア留学」を提供しています。 プログラミングと英語、エンジニア/ IT留学に興味がある方は以下からチェック!
Related Posts
投稿者プロフィール
-
NexSeedメディア編集部です。英語学習について、フィリピン・セブ島の魅力、NexSeedでの留学生活などを伝えます!
記事に関するお問い合わせはこちらのメールアドレスにお願いします(・∀・)
ns-support@nexseed.net