iOS 4からは新たに「iAd」と呼ばれる、アップルが販売・ホスティングする広告サービスを使用できるようになりました。これは「iAdフレームワーク」をアプリ内に使用してバナー広告を表示することで、開発者は60%の広告収入を得られるというものです。フリーのアプリでも広告収入が得られるため、アプリ開発者にとっては魅力的な機能といえます。
XcodeでBMICalcプロジェクトを開きます。EventKitと同様に、Xcodeのグループとファイルから[Frameworks]を右クリックし、[追加]→[既存のフレームワーク]を選択します。表示されたフレームワークの一覧から[iAd.framework]を選択し、[追加]をクリックします。
以上でプロジェクトに[iAd.framework]が追加されました。
次に、「BMICalcViewController.h」を以下のように編集します。
#import <UIKit/UIKit.h>
#import <EventKit/EventKit.h>
#import <iAd/iAd.h>
@interface BMICalcViewController : UIViewController<UITextFieldDelegate, ADBannerViewDelegate> {
……【省略】……
ADBannerView *adView; // 広告バナービュー
BOOL bannerIsVisible; // 広告バナー表示中を表すフラグ
}
……【省略】……
@property (nonatomic, retain) ADBannerView *adView;
@property (nonatomic, assign) BOOL bannerIsVisible;
……【省略】……
まず、iAdフレームワークのインポート宣言を追加し、「ADBannerViewDelegate」プロトコルの実装を追加しています。メンバ変数には広告バナービュー用の変数と、広告が現在表示中かどうかを表すフラグを追加しています。
次に、「BMICalcViewController.m」を以下のように編集します。
- (void)viewDidLoad {
……【省略】……
// 広告ビューを初期化
self.adView = [[ADBannerView alloc] initWithFrame:CGRectZero];
self.adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
// ADBannerViewのデリゲートにこのBMICalcViewController自身を設定
self.adView.delegate = self;
// 画面の下部に表示
self.adView.frame =
CGRectOffset(adView.frame, 0, self.view.frame.size.height - self.adView.frame.size.height);
// 広告表示フラグをYESに設定
self.bannerIsVisible = YES;
// サブビューとして追加
[self.view addSubview:adView];
}
広告バナーのビュークラスである「AdBannerView」を、広告を表示したい画面のサブビューとして追加します。AdBannerViewは通常の「UIView」クラスと同様に扱えるため、「frame」プロパティを設定することで、表示位置の調整が行えます。
今回は画面の下部に表示されるよう調節しています。
さらに、以下の2つのデリゲートメソッドを追加します。
// 広告読み込みエラー時に実行される
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError * )error{
// 広告が表示されていたら
if (self.bannerIsVisible) {
// 画面より下に広告を隠す
self.adView.frame = CGRectOffset(adView.frame, 0, self.view.frame.size.height);
// 広告表示フラグをYESに設定
self.bannerIsVisible = NO;
}
}
// 広告読み込み成功時に実行される
- (void)bannerViewDidLoadAd:(ADBannerView *)banner{
// 広告が表示されていなかったら
if (!self.bannerIsVisible) {
// 画面の下部に広告表示
self.adView.frame =
CGRectOffset(adView.frame, 0, self.view.frame.size.height - self.adView.frame.size.height);
// 広告表示フラグをYESに設定
self.bannerIsVisible = YES;
}
}
「bannerView: didFailToReceiveAdWithError」メソッドは広告読み込みエラー時に呼ばれます。ここではバナー広告を隠すようにし、アプリに空の広告やエラーの広告バナーが表示されないようにしています。
「bannerViewDidLoadAd」メソッドは広告読み込み成功時に呼ばれます。成功時に初めてバナー広告を表示するようにしています。
追加されたAdBannerViewがiAdサービスと通信を行い広告を読み込みます。この読み込みが成功・失敗した場合の処理をADBannerViewDelegateプロトコルのデリゲートメソッドによって制御しています。
最後に、追加したメンバ変数の解放を忘れずにしておきましょう。
- (void)dealloc {
[heightText release];
[weightText release];
[calcButton release];
[resetButton release];
[resultLabel release];
[bmiStr release];
[result release];
[eventStore release];
[adView release];
[super dealloc];
}
以上で実装は完了です。ビルドして実行してみましょう。
画面の下部に広告バナーが表示されるようになりました。こちらをクリックすると、アプリ内から広告用のビューが表示されます(シミュレータ上ではテスト用の広告が表示されます)。
今回はiOS 4 SDKで追加された新しいフレームワークを使って、既存のiPhoneアプリをさらにパワーアップする方法を紹介しましたが、いかがでしたでしょうか。
次回は、いよいよ最終回です。今回紹介したフレームワークを含めて、iOS 4の新機能をまとめて紹介するので、お楽しみに!
竹内 彰吾(たけうち しょうご)
どこにでもいる職業プログラマであり、好きな言語はJavaとObjective-C。現在は、業務システムの開発に従事し、顧客の要望に日々全力で応えている。
一方、ほかの案件や趣味ではiPhone/Androidアプリ開発にも積極的に取り組んでいる
羽倉 敬(はぐら たかし)
千葉大学法経学部卒業。大学時代よりオープンソースに興味を持ち、オープンソース専業ベンダのビーブレイクシステムズに入社。現在に至る。
愛用のiPhoneアプリは「愛二郎」
Copyright © ITmedia, Inc. All Rights Reserved.