Home > 2010年09月09日
2010年09月09日
IB不使用&オープンソースなiPadアプリ(テキストエディタ)を作る 第7回:AdMob
- 2010-09-09 (Thu)
- Edhita
第7回。
今回は無料アプリの宿命(?)である
お金の問題を解決してくれるかもしれない広告についてです。
まぁお金が欲しければ有料化すればいい話なのですが、
そんな勇気もない僕のような開発者には強い味方ですね。
それでは始めます。
なお、AppleのiAdはまだ日本では表示されないので、
GoogleのAdMobを使います。
参考
- 広告AdMobをiPhoneアプリに表示する方法 - コードで一言。
- 広告AdMobを表示させる方法: iPhoneアプリ開発備忘録
- iPhone アプリに AdMob をくっ付けてみる - Debian GNU/Linux 3.1 on PowerMac G4
参考文献は第1回参照。
素材
引き続き、Soft * Accessory様の素材をお借りしています。
1. AdMob登録
まずはAdMobに登録しないと始まりません。
AdMobのサイトにアクセスし、
今すぐスタートから新規登録を行ないます。
ちなみに必要な情報は以下のとおり。
僕はオプションの電話・会社以外ちゃんと入力しました。
- 名
- 姓
- 電話(オプション)
- 会社(オプション)
- 住所
- 国
- 市区町村
- 州
- 郵便番号
- 言語
必要な情報を入力し「submit」すると、「AdMobアカウントの登録」メールが来ます。
その中のリンクをクリックすると「お客様のアカウントが有効になりました」画面が表示され、
登録は完了です。
2. AdMob SDKへの取得
次にAdMobのSDKをダウンロードします。
ログインするか、ログイン後画面右上のメールアドレスをクリックして、
アカウント画面に行きます。
「サイト及びアプリケーション」内の「サイト/アプリケーションの追加」を
クリックすると、サイト情報の入力画面になります。
「iPadアプリケーション」を選択し、必要な情報を入力します。
※ アプリURLは入力しなくても大丈夫です。
次に進むと「サイト コードを取得」画面が出てくるので、
「AdMob iPad/iPhone SDKをダウンロード」からSDK(admob_iphone_sdk_20100818.tar.gz)を、
「SDK の説明書をPDF 文書でダウンロードしてください。」からPDF(AdMob_iPad_SDK_Instructions.pdf)を
ダウンロードします。
3. プロジェクトへの導入
ダウンロードしたSDKをプロジェクトに組み込みます。
PDFファイルに沿ってやればOKですが、英語なので一応流れを書いておきます。
Step1
SDK内の以下のファイルをAdMobフォルダごと、
プロジェクト直下にコピーします。
- AdMob/
- AdMobDelegateProtocol.h
- AdMobView.h
- libAdMob.a
Step2
「Frameworksを右クリック→追加→既存のフレームワーク」から、
以下を追加します。
- AudioToolbox
- CoreGraphics
- MediaPlayer
- MessageUI
- QuartzCore
Step3
SDK内のTouchJSONフォルダをまるごとプロジェクト直下にコピーします。
Step4
publisher IDはSDK内に記載されているので問題なしです。
Step5(iPad)
実装です。次節で説明します。
4. 広告表示
やっとコーディングです。
お金がからむと前作業が長いですね^^
ここもPDF内のStep5に従うだけですが、量もそんなに多く無いので、
今回コードに加えた変更を全部載せておきます。
といっても、
「admob_iphone_sdk/sample_projects/AdMobSampleAdsiPad/Classes」内の
「EarthquakeListViewController.h, m」にPublisher ID含め全部書いてあるので、
コピーするだけなんですが。
AdMobDelegate
AdMobからのdelegateを受けるクラスを実装します。
今回はRootViewControllerにその機能を持たせています。
// RootViewController.h
#import "AdMobDelegateProtocol.h"
#import "AdMobView.h"
@interface RootViewController : UITableViewController <AdMobDelegate> {
// RootViewController.m
#pragma mark -
#pragma mark AdMobDelegate methods
- (NSString *)publisherIdForAd:(AdMobView *)adView {
return @"publisher ID"; // this should be prefilled; if not, get it from www.admob.com
}
- (UIViewController *)currentViewControllerForAd:(AdMobView *)adView {
// Return the top level view controller if possible. In this case, it is
// the split view controller
return self.splitViewController;
// return self.navigationController.parentViewController;
}
- (void)willPresentFullScreenModalFromAd:(AdMobView *)adView {
// IMPORTANT!!! IMPORTANT!!!
// If we are about to get a full screen modal and we have a popover controller, dimiss it.
// Otherwise, you may see the popover on top of the landing page.
if (detailViewController.popoverController && detailViewController.popoverController.popoverVisible) {
[detailViewController.popoverController dismissPopoverAnimated:YES];
}
}
- (NSArray *)testDevices {
return [NSArray arrayWithObjects: ADMOB_SIMULATOR_ID, nil];
}
プライベート指定解除
delegate内から使うDetailViewControllerのプロパティがプライペート化されちゃってるので、それを解除します。
// DetailViewController.h
@property (nonatomic, retain) UIPopoverController *popoverController;
// DetailViewController.m
@interface DetailViewController ()
//プライベートメソッドの解除(AdMobから使うので)
//@property (nonatomic, retain) UIPopoverController *popoverController;
- (void)configureView;
@end
AdMobViewの追加
最後に広告Viewを表示します。
今回はTableViewのFooterに表示するので、
RootViewControllerのinitWithPath内で行います。
AdMobView *adMobView = [AdMobView requestAdOfSize:ADMOB_SIZE_320x270 withDelegate:self];
// AdMobView *adMobView = [AdMobView requestAdOfSize:ADMOB_SIZE_320x48 withDelegate:self];
self.tableView.tableFooterView = adMobView;
[完成]
広告とはいえ、画像が入ると見た目が良くなっていいですね。
[まとめ]
AdMobは現状審査もないらしく、
非常に簡単な印象を受けました。
あとはどれくらいのお小遣いになるかですが、
もうちょっとでEdhitaをリリースしてみる予定なので、
そこで試してみようと思います。
それでは。
[コード]
今回のコードは「Edhita7.zip」に入っています。
GitHubのdownloadページからダウンロードして下さい。
Downloads for tnantoka's Edhita - GitHub
おまけと謝罪
今までgitのリポジトリにほとんどのファイルがコミットできていませんでした。
(git add .等をしていなかったので、新規ファイルが管理されていなかったのです。)
たまたま毎回ダウンロード用のファイルを用意していなので、少しは救われましたが、
試行錯誤の痕跡がなくなってしまってかなりショックです。
リポジトリをチェックアウトされた方々にもご迷惑をお掛けしました。
凹んでてもしょうがないので気を取り直して頑張ります。
Home > 2010年09月09日
- Search
-
Loading
- Feeds
- Links
- スポンサードリンク
