AndroidにAdMobを入れるまでの対応

=前置き=

 広告「で」遊ぶため、まずは普通に広告を入れてみることにした。新しく何かを作ると時間がかかるので、今回はmonochrollに広告を入れてみた。広告としてAdMobを入れようとしたものの、AdMobまわりの設定はGoogleによる買収の影響のせいか色々と情報が変わってしまっているので、そこらへんの情報を改めてメモしておく。

AndroidへのAdMobの導入:2012/04時点=

 AdMobへの登録まわりはAndroidにAdmob広告を設置する方法 - Hacking My Way 〜 itogのhack日記の時点とあまり変わらないので、リンク先の情報を参照すればOK。jarの配置まではリンク先と同じで良いが、xmlまわりの設定は変わってしまったので別のところを参考にする。


 今は英語の説明しかないが、https://developers.google.com/mobile-ads-sdk/docs/android/fundamentals?hl=jaが公式なのでたぶん常に最新の情報になると思う。簡単に言えば設定するのは「Manifestへのactivityの登録」「実際の表示箇所の設定」の2つだけ。xmlでの配置はhttps://developers.google.com/mobile-ads-sdk/docs/android/banner_xml?hl=jaにあるので、表示箇所の設定は自分はこちらを使った。


 さらにAdMobの設定でconfigChangesにscreenSizeなどを設定する必要があるため、GoogleAPIを13以上にする必要がある。つまりAndroid3.2以上を対象にしないとアプリの作成ができない。


 やることをまとめると、

  • AdMobへのアカウント登録
  • AdMobからAndroid用のjarをダウンロード
  • jarをlibに配置してEclipseにパスを追加
  • ターゲットをGoogleAPI13以上(Android3.2以上)に変更
  • Manifestへのactivityの登録
  • 実際の表示箇所の設定

あたり。早ければ1時間くらいで設定は完了すると思う。

=monochrollに広告を入れた場合の問題点=

 そもそも広告を入れることは想定していなかったので、いくつか問題が出てきた。


 まず、横持ちに広告を入れるのでかなり縦が狭くなる。なので全体的に表示が小さくなってしまう。


 次に、広告の表示が少し遅れて実行されるので、画面のレイアウトもそのタイミングで再構築されてしまう。これがシーンの遷移のたびに起こり、押そうと思ったボタンの位置が変わってしまうのでややストレス。レイアウトが変わらないようにかぶせると今度は色々と見えなくなったりボタンが押しづらくなったりする。


 「全てOpenGLで描画しているところでは広告が表示されない」というのもある。ゲーム画面の方はxmlによるレイアウトは使っていなかったので、専用の対応をする必要があった。これは単純に広告とandroid.opengl.GLSurfaceViewを並べたxmlを作成し、GLSurfaceViewに今までの描画処理をSetRendererで登録することで解決した。


 また、広告を入れるとゲーム画面の上端の位置が下がるため、ステージ選択でのタッチ位置が想定よりズレてしまう。


 そして広告表示をした状態だと、ゲームクリア時にNextを選んでもすぐクリア扱いになってしまう問題が起こった。OpenGL単体の時はメニューから戻るたびにonSurfaceCreatedが呼ばれていたものの、xmlで設定した状態だと呼ばれないためそこらへんで不整合が起こっている様子。さらにonSurfaceCreatedの呼ばれるタイミングは機種ごとに違うようなので、広告以前に今の対応で大丈夫なのかもわからなくなってきた。


 ということで、色々と問題があったので広告版monochrollのリリースは諦めた。広告を入れる際の対応方法や問題点は色々とわかったので目的は達したものの、せっかくだからmonochrollフリー版を出したかった。将来的に他の機種でも確実に表示できる対応をしつつフリー版を用意するような対応をするかもしれない。

=広告「で」遊ぶための情報=

 AdMobのページにて「テキストの色と背景色」「リフレッシュレート(更新頻度):12秒〜120秒」が設定できることがわかった。色は情報を抽出するのに使えそうだし、リフレッシュレートによって何かのタイミングを設定できそう。


 あとはAdMobの内容をどうにかして取得したいが、ドキュメントを見ても文字列などの取得方法とかはないっぽい。ということで、何かにレンダリングしてからその色情報を元に云々することになりそう。

=予定=

 Androidで広告を出すところまでは検証完了。次はAir経由で広告を出す方法の調査と、広告「で」遊ぶための情報取得の検証などをする予定。