サンプルコードを Xcode 4 でビルド

ダウンロードしてきたサンプルを Xcode でビルドするのに注意するのは2点。

  • MY BANNER_UNIT_ID を設定する

サンプルコードの BannerExampleViewController.m に次のように書いてある。

#if !defined(MY_BANNER_UNIT_ID)
  #error "You must define MY_BANNER_UNIT_ID as your AdMob Publisher ID"
#endif

エラー無くビルドするには、MY_BANNER_UNIT_ID を AdMob Publisher ID で定義しないと駄目。AdMob Publisher ID は AdMob のページの「サイト及びアプリケーション」タブでアプリケーション名の右下に表示される「設定を管理」をクリックしたページで確認できるので、コピー&ペーストすれば楽チン。


というわけで、自分はこんな感じにした。

#define MY_BANNER_UNIT_ID	@"xxxxxxxxxxxxxxx"

#if !defined(MY_BANNER_UNIT_ID)
  #error "You must define MY_BANNER_UNIT_ID as your AdMob Publisher ID"
#endif

@"xxxxxxxxxxxxxxx" はもちろんそれぞれのパブリッシャー ID を入れる。

  • テスト時には GADRequest の testing を YES にする

説明のページの「Intermediate」に記述があるけど、テストをする時には本当の広告が表示されないようにした方が良い。そこで、広告をリクエストする際にテストであるということを知らせる方法があるので設定してみた。

  // Let the runtime know which UIViewController to restore after taking
  // the user wherever the ad goes and add it to the view hierarchy.
  bannerView_.rootViewController = self;
  [self.view addSubview:bannerView_];

  // For Testing
  GADRequest *rq = [GADRequest request];
  rq.testing = YES;

  // Initiate a generic request to load it with an ad.
  [bannerView_ loadRequest:rq];

まずは中央の For Testing というコメントと、その下に2行加えた。ここで、GADRequest の testing プロパティを YES にしている。そして、最後の行で testing プロパティを YES にした GADRequest を使って広告のリクエストをしている。
これで、テスト用の広告が表示されるようになった。

ちなみに、この設定は iOS シミュレータで動作させた時にだけ有効になる。同じコードを実機で動作させるとちゃんと本物の広告が表示される。

これで testing を YES にしたまま忘れてアプリをリリースしちゃっても大丈夫!とドキュメントにはあるけど、#ifdef 使うとかして自分で回避した方が気分的に良いかな〜。