2012年11月17日土曜日

【Titanium】AdMobをAndroidとiOSに両対応させる

開発PC:MacOS 10.7.5
Titunium Studio:2.1.2.201208301612
Android:L-01D(Android4.0にアップデート済)

先にAndroidに導入済みでそこからiOSにもさせたいって時にすんなりできなかったのでメモ。

AdMobのmoduleはAndroid用が2.0、iOS用が1.3。
tiapp.xmlのmodulesの部分はこんな感じに。

<modules>
    <module platform="iphone" version="1.3">ti.admob</module>
    <module platform="android" version="2.0">ti.admob</module>
</modules>

大きなポイントとしては、AdMobのオブジェクトを作るときに、
AndroidはHeightの指定がいらない、iOSではHeightの指定が必要という点。
少なくとも自分の環境ではそんな結果に。
なので、こんな感じにiOSのときだけ高さの指定を別に行っています。

    if ( Ti.Platform.name == 'iPhone OS'){
        adMobView.height = 50;
    }

これくらいですんなり動くように。
あとはAdmobオブジェクトのイベントが、
iOSだと'didFailToReceiveAd'、AndroidだとAdmob.AD_NOT_RECEIVEDってなっているみたいで、
広告の呼び出し失敗時などにイベントを発生させたい場合は注意が必要みたいです。

以上。

2012年11月13日火曜日

【Titanium】Android環境でのadmobの実装

開発PC:MacOS 10.7.5
Titunium Studio:2.1.2.201208301612
Android:L-01D(Android4.0にアップデート済)

作っているアプリは無料での公開を考えているので、公開の際には広告を入れたいなぁと思っています。
とりあえず、有名どころでAdmobを組みこもうと数日試行錯誤。

あちこちのブログを参考に試してみましたが、最初2011年の記事を参考にして実装を試みたところ、Tituniumのバージョンが違うのか、「実機で表示されない」、「表示されない場合が多々ある」などの問題に見舞われました。
いろいろ試したので結局のところ何が悪いのか絞り込めなかったのですが、以下のサイト
http://web.showjin.me/2012/07/titanium-mobile_android_admob.html
を参考にしたところ、うまくエミュレータ&実機で動作させる事ができました。
ポイントはModuleについてくるapp.jsのコードを使用したところでしょうか。
それと、requestAd()を呼び出す際に
setTimeout(function(){
    adMobView.requestAd();
},3000);
時間をおいてから呼び出すようにしてみて今のところ安定動作しています。
表示確率が低い、という記事も見かけましたが、現行版だと問題なさそうですが引き続き試してみる必要がありそうです。