GADGET FACTORY 雑記帳

iPhone アプリ / Flash コンテンツ /Adobe AIR などを開発していて気づいたことや備忘録、TIPS、HACKなど

Google Play Service 対応 Admob 用 ANEのテスト

※2014/11/17追記

下記に紹介した ane は、現在コード内で、広告表示のうち、2/3程度の広告が、ane 制作者の Admob ID を利用して表示される広告になってしまうことが判明いたしました。

CodeAlchemy's AdMob ANE! - Starling Forum

つきましては、記事としては作成しておりますが、使用については、控えていただく方が良いと考えます。
万一、当記事を参考にされて、すでにアプリ内に組み込まれた方がいらっしゃいましたら、早急に削除されることをお勧めいたします。

また、当方の内容に関する調査不足により、このような記事を記載してしまった事を、深くお詫び申し上げます。

昨日、アプリ内の広告が一斉に表示されなくなった現象は、Admob サーバー側の問題だったように思われます。
アプリの広告が表示されない - GADGET FACTORY 雑記帳
アプリの広告が表示されない [続き] - GADGET FACTORY 雑記帳

ただ、Admob SDK を利用して、Admob を表示している場合は、そのうち今回のように、突然アプリ内広告が表示されなくなる可能性もあるので、Google Play Service を利用した Admob 用の ANE について実装テストしてみました。

今回テストしたのは、こちらの Admobです。
https://github.com/Code-Alchemy/AdMobAne

テストしたバージョンは、1.7.8 です。


iPhone版の実装準備

まずは、ANEをプロジェクトに追加します。
追加するのは、ダウンロードした ZIP ファイルを解答したフォルダ内の、
/anes_builds/AdMobAne_iOS.ane
というファイルです。

次に、マニュフェストファイル(.xml)内への追記

extensions の中に下記を追加

<extensions>
 <extensionID>com.codealchemy.ane.admobane</extensionID>
</extensions>

iPhone版の実装はそんなに難しくはなかったです。

Android版の実装準備

まずは、ANEをプロジェクトに追加します。
追加するのは、ダウンロードした ZIP ファイルを解答したフォルダ内の、
/anes_builds/AdMobAne_Android.ane
というファイルです。

次に、マニュフェストファイル(.xml)内への追記

<manifestAdditions>
 <![CDATA[
  <manifest android:installLocation="auto">
   <uses-permission android:name="android.permission.INTERNET"/>
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
   <application android:enabled="true">
    <meta-data android:name="com.google.android.gms.version" android:value="4452000"/>
    <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
   </application>
  </manifest>
 ]]>
</manifestAdditions>

extensions の中に下記を追加

<extensions>
 <extensionID>com.codealchemy.ane.admobane</extensionID>
</extensions>

他に、Google Play Service を利用している ANE がプロジェクト内に含まれていなければ、上記の記述で問題はないようです。

ただ、複数の ANE を実装していて、すでに Google Play Service SDK が含まれている ANE がプロジェクト内に含まれている場合は、いろいろと問題が出て来るようです。

まず、組み込む ANE が
/anes_builds/AdMobAne_Android.ane
ではなく、
/anes_builds/No_GooglePlay_Lib/AdMobAne_Android.ane
となります。

さらに、マニュフェストファイルの記述の

<meta-data android:name="com.google.android.gms.version" android:value="4452000"/>

の「4452000」の部分を、すでに組み込まれているGoogle Play Service SDK のバージョンに合わせて変更する必要が出てきます。

表記するバージョンと、組み込まれているバージョンが合致しないと、動作しないようです。

iPhone/Android版プロジェクト内コード

実際のバナーを呼び出すためのプロジェクト内に記述するスクリプトは、

import com.codealchemy.ane.admobane.AdMobManager;
import com.codealchemy.ane.admobane.AdMobPosition;
import com.codealchemy.ane.admobane.AdMobSize;

var adMobManager:AdMobManager;

function hoge():void{
 adMobManager = AdMobManager.manager;
 if(adMobManager.isSupported){
  adMobManager.verbose = true;		
  adMobManager.operationMode = AdMobManager.PROD_MODE;
				
  adMobManager.bannersAdMobId = "ここに Admob IDを入れる";
  adMobManager.createBanner(AdMobSize.SMART_BANNER,AdMobPosition.BOTTOM_CENTER, "BottomBanner", null, true);
 }
}

上記のコードであれば、hoge(); を呼び出すことで、画面中央下部にバナーが表示されるはずです。

  adMobManager.createBanner(AdMobSize.SMART_BANNER,AdMobPosition.BOTTOM_CENTER, "BottomBanner", null, true);

の代わりに、

  adMobManager.createBannerAbsolute(AdMobSize.SMART_BANNER,xx,yy, "BottomBanner", null, true);

とすれば、座標(xx,yy)の位置にバナーを表示することもできます。