【iOSアプリ開発】SampleiAd作成手順


現在開発中のiOSアプリに広告を入れようとする際、その方法やメディエーションはいくつか選択肢があります。

その中でもApple純正メディエーションiAdの導入方法を今回はご紹介したいと思います。

iAdって何?と思われた方は下記リンクを御覧ください。
http://ja.wikipedia.org/wiki/IAd

  • 前提:SingleViewApplicationを選択して作成したプロジェクトであること

 

1.プロジェクトにiAdフレームワークを追加

  • 左のツリー表示から青いプロジェクトファイルを選択
  • Linked Frameworks and Librariesにて『+』ボタンをクリック
  • 現れたウィンドウ上の検索パネル「iAd」と検索し、Addボタンで追加

72c6f80e-1d2e-d0c0-ceec-50afe7d5e8b8

 

 

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の英語留学、エンジニア留学について詳しく知りたい方はこちら
お気軽にお問い合わせください。