連載
» 2011年03月28日 00時00分 公開

SDKで始めるiPad/iPhoneアプリ開発の勘所(6):EventKitとiAdでiPhoneアプリにカレンダーと広告を付けるには (4/4)

[竹内彰吾, 羽倉敬,株式会社ビーブレイクシステムズ]
前のページへ 1|2|3|4       

アプリにバナー広告を追加できる「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アプリは「愛二郎」



前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。