今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

TitaniumアプリにAdMob広告を表示する方法 - Android編

昨日は iPhoneアプリでAdMob広告表示できるようになったので、次はAndroidアプリでもチャレンジ。
まずはiPhoneアプリが動いた状態に何も手を加えないでAndroidエミュレータで動かしてみたら、ti.admobモジュールが見つからないって怒られたというところまで昨日のエントリーに書いた。

Uncaught Error: Requested module not found: ti.admob

そこでAndroid用のモジュールを追加してみる。

Titanium StudioにAdMobモジュールを追加する

appcelerator / titanium_modules
こちらの dist フォルダから ti.admob-android-2.x.x.zip をダウンロードする。iosと違って、直下になかったのでかなり探しまわった。。。

ダウンロードしたZIPファイルを解凍すると modules フォルダが生成されるので、フォルダまるごとTitanium Studioのフォルダにコピーする。これは iPhone版と同じ。

$ cp -R modules ~/Library/Application\ Support/Titanium/

~/Library/Application\ Support/Titanium/modules/android/ti.admob がAndroid用AdMobモジュールにあたる。

tiapp.xmlに設定を追加する

iPhoneアプリだけの時は次のように書いた。

  <modules>
    <module version="1.x.x">ti.admob</module>
  </modules>

でも、AndroidiPhoneの両方をサポートするには、プラットフォーム毎に指定しないといけないっぽい。

  <modules>
    <module platform="android" version="2.x.x">ti.admob</module>
    <module platform="iphone" version="1.x.x">ti.admob</module>
  </modules>

これで動かしてみたら、Androidエミュレータ上でアプリは起動したけど、広告が表示されなかった。

コンソールの出力を確認してみたら次のような警告が出てた。

W/Ads     (  375): Not enough space to show ad! Wants: <480, 75>, Has: <320, 50>

サイズの指定が合ってないと表示できない?

画面サイズに応じた広告サイズを指定する

index.js で画面幅を取得して、動的に広告サイズを変更するようにした。

var win = Ti.UI.createWindow({
	backgroundColor: '#f4f4f4'
});
var view = Ti.UI.createView();
var admob = require('ti.admob');
var w = Ti.Platform.displayCaps.platformWidth;
var h = w * 5 / 32;
var adview = admob.createView({
    top:0,
    left:0,
    right:0,
    width:w,
    height:h,
    testing:true,
    publisherId:'hogehoge'
});

view.add(adview);
win.add(view);
win.open();

これでAndroidアプリでもAdMob広告表示ができた。