EventKitとiAdでiPhoneアプリにカレンダーと広告を付けるには:SDKで始めるiPad/iPhoneアプリ開発の勘所(6)(4/4 ページ)
初めてiPhone/iPadアプリ開発に挑戦する人が、迷わず短時間でアプリを作れるように、数多くの情報の中から要点をグっと絞った開発の勘所を紹介する入門連載です
アプリにバナー広告を追加できる「iAd」とは
iOS 4からは新たに「iAd」と呼ばれる、アップルが販売・ホスティングする広告サービスを使用できるようになりました。これは「iAdフレームワーク」をアプリ内に使用してバナー広告を表示することで、開発者は60%の広告収入を得られるというものです。フリーのアプリでも広告収入が得られるため、アプリ開発者にとっては魅力的な機能といえます。
iAdフレームワークを使うには
XcodeでBMICalcプロジェクトを開きます。EventKitと同様に、Xcodeのグループとファイルから[Frameworks]を右クリックし、[追加]→[既存のフレームワーク]を選択します。表示されたフレームワークの一覧から[iAd.framework]を選択し、[追加]をクリックします。
以上でプロジェクトに[iAd.framework]が追加されました。
BMICalcViewController.h
次に、「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
次に、「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つのデリゲートメソッドを追加
さらに、以下の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]; }
iPhoneアプリに追加された広告バナーを見てみよう
以上で実装は完了です。ビルドして実行してみましょう。
画面の下部に広告バナーが表示されるようになりました。こちらをクリックすると、アプリ内から広告用のビューが表示されます(シミュレータ上ではテスト用の広告が表示されます)。
次回は、iOS 4の新機能をまとめて紹介!
今回はiOS 4 SDKで追加された新しいフレームワークを使って、既存のiPhoneアプリをさらにパワーアップする方法を紹介しましたが、いかがでしたでしょうか。
次回は、いよいよ最終回です。今回紹介したフレームワークを含めて、iOS 4の新機能をまとめて紹介するので、お楽しみに!
筆者紹介
竹内 彰吾(たけうち しょうご)
どこにでもいる職業プログラマであり、好きな言語はJavaとObjective-C。現在は、業務システムの開発に従事し、顧客の要望に日々全力で応えている。
一方、ほかの案件や趣味ではiPhone/Androidアプリ開発にも積極的に取り組んでいる
筆者紹介
羽倉 敬(はぐら たかし)
千葉大学法経学部卒業。大学時代よりオープンソースに興味を持ち、オープンソース専業ベンダのビーブレイクシステムズに入社。現在に至る。
愛用のiPhoneアプリは「愛二郎」
Copyright © ITmedia, Inc. All Rights Reserved.