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.