2012/05/25更新

[XCODE] iPhoneアプリで広告を表示するには

このエントリーをはてなブックマークに追加      

今日は、iPhoneアプリケーションで広告(iAD)を表示する方法を学んだので、ブログに書きたいと思います。

画像





iPhoneで表示する広告とは

最近の無料アプリでよく見る広告。画面の上や下にちょっとした幅を取って、広告を表示する事が出来ます。iADというそうです。

例えば下の画面では、画面の下部分に広告を表示しています。今回はこの広告表示を行います。

f:id:yoheiM:20110901191357p:image

広告は表示したりすることで、広告掲載した人が儲かる仕組みです。どれくらい儲かるかは、アプリ制作者次第(*´∇`*)





まずはiADを使うためのユーザー登録

iADを使うには、iTunesConnectにユーザー登録する必要があります。その際に、iPhone Developer登録したアカウントでユーザー登録する事で、iADを使う準備が出来ます。以下サイトから、登録出来ます。

f:id:yoheiM:20110901191358p:image

http://developer.apple.com/iAD/





次にiAD Frameworkの読み込み

広告を出したいアプリケーションを作成するXCODEプロジェクトに、iAD Frameworkを追加します。これしないと、コンパイル時に「そんなクラスないよ~」ってエラーが発生します。あと、コンテンツアシストも使えないので、不便不便(; ̄ェ ̄)





続いてADBannerViewの作成とViewへの追加

ここから本題。広告を表示する為のADBannerViewを作成して、表示したいところに表示します。ADBannerViewはなんと、大きさは既に決まっているようです。iPhoneであれば、縦向き:横320pt, 縦50pt、横向き:横480pt, 縦32ptとのこと。この大きさで後はどこに表示するかを決めるだけですね。

ADBannerViewを作成するには、Interface Builderでもプログラムからでもどちらでも大丈夫そうです。今回は、プログラムから追加しました。

ADBannerView *adView = [[ADBannerView alloc] initWithFrame:CGRectZero];
adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
[self.view addSubview:adView];

currentContentSizeIdentifierとは、ADBannerViewのサイズを指定しています。上記なら、縦向きの場合のサイズを指定しています。





ADBannerViewのデリゲート設定

ADBannerViewが広告を読み込んだり、エラーが発生したり、広告を全画面に表示したりする際に、呼び出されるデリゲートを設定します。現在使っているUIViewControllerでも良いですし、デリゲード専用のクラスを作成してもイイと思います。今回は、現在使っているUIViewControllerにデリゲートを設定しました。

(IAD_ViewController.h)

#import <UIKit/UIKit.h>
#import <iAd/iAd.h>
@interface IAD_ViewController : UIViewController 
<ADBannerViewDelegate> {
}

(IAD_ViewController.m)

#import "IAD_ViewController.h"
@implementation IAD_ViewController
~~省略~~
#pragma mark -
#pragma mark ADBannerViewDelegate implementation
- (void)bannerViewDidLoadAd:(ADBannerView *)banner {
  NSLog(@"bannerViewDidLoadAd: is called.");
}
- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave {
  NSLog(@"bannerViewActionShouldBegin:willLeaveApplication: is called.");
  return YES;
}
- (void)bannerViewActionDidFinish:(ADBannerView *)banner {
  NSLog(@"bannerViewActionDidFinish: is called.");
}
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
  NSLog(@"bannerView:didFailToReceiveAdWithError: is called. ERROR: %@ %@", [error localizedDescription], [error userInfo]);
}
@end


各デリゲートメソッドの説明

デリゲートメソッドは全部で4つあるようです。それぞれの使い方を記載します。

■- (void)bannerViewDidLoadAd:(ADBannerView *)banner

これは、広告のロードに成功した際に呼び出されるメソッドです。ここでは、ADBannerViewを非表示から表示に切り替えるなどの実装を行います。今回はログだしだけです。


■- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave

これは、ユーザーがADBannerViewをクリックした際に呼び出されます。戻り値のBOOL値で、広告を開くかどうかを指定することが出来ます。引数のwikkLeaveApplicationは、YESの場合には別のアプリケーションが立ち上がり、NOの場合には現在のアプリケーション内で後続処理が行われます。

このメソッド内では、現在のView上の処理を一時停止するなど、広告を全画面表示する前の準備を行います。


■- (void)bannerViewActionDidFinish:(ADBannerView *)banner

これは、全画面表示された広告の処理が終了した際に、呼び出されるメソッドです。このメソッドが呼び出された後に、別アプリケーション(Safariなど)に処理が移り現在のアプリケーションはバックグラウンドに移るかもしれません。または、ユーザーが広告表示をキャンセルして、現在のアプリケーションがアクティブになるかもしれません。

このメソッド内では、中断していた処理を再開するなどの対応が必要です。


■- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error

このメソッドは、広告のロードに失敗した場合に呼び出されます。引数のerrorに、エラー情報が含まれています。エラーが発生したら表示を止めたいなど、エラー時の処理を記載します。

なお、広告のロードに失敗しても、その後も広告を読み込もうとします。その結果、広告表示が遅れながらも成功する事も多々あるようです。





参考

参考にしたのは、以下情報です。ありがとうございます。

iAD Programming Guide

ADBannerView Class Reference

ADBannerViewDelegate Protocol Reference





最後に

アプリでアフィリエイトが出来るのは、イイ選択肢ですね。でも広告無くても狭いiPhoneの画面を、広告で一部使うというのも微妙ですね。画面設計は、きっちりやって、広告を表示しても狭いと感じない画面を作成したいですね♪(´ε` )







こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。