ローリングコンバットピッチなう!

AIとか仮想化とかペーパークラフトとか

Google Mobile Ads SDK(Admob)覚書

あとでちゃんと書きますが、Admob SDKGoogle play開発者サービスに移行していて、巷のブログの解説記事と色々差分あるので、忘れないための覚書

  • 公式Developer Guide

https://developers.google.com/mobile-ads-sdk/?hl=ja

  • Admob SDKGoogle play開発者サービスに移行する前との差分

https://developers.google.com/mobile-ads-sdk/docs/admob/play-migration?hl=ja

https://developer.android.com/google/play-services/setup.html
proguard-project.txtに下記を付け加えろと書いてあります。

-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}

-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    public static final *** NULL;
}

-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
    @com.google.android.gms.common.annotation.KeepName *;
}

-keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
}

別のブログ(http://yasu-2.blogspot.jp/2012/06/adt18proguard-projecttxt.html)で見つけた下記も入れてある。
こっちだけでも問題無く動いているっぽい。

-keep public class com.google.ads.** {
    public protected *;
}
-keep public class com.google.gson.** {
    public protected *;
}
  • 実行する端末でGoogle play開発者サービスがインストールされているかチェックするAPI

ちゃんとインストールされていないとAdmob動かないので、動的にチェックするのが吉
http://developer.android.com/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isGooglePlayServicesAvailable%28android.content.Context%29

  • addTestDevice()に注意

Admobの実装方法的な開発者ブログや公式ガイドにもたいてい開発用端末のIDをadRequestにaddTestDeviceで追加しろと書いてあるけど、これやると開発用端末で広告が全然表示されません。addTestDevice()を使わない状態で最低1回広告の表示を確認してから付けた方が吉。

AdRequest adRequest = new AdRequest.Builder()
    .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)       // エミュレータ
    .addTestDevice("xxxxxxxxxxxxxxxxx") // テスト用携帯電話のID
    .build();

追記:addTestDevice()して2,3日したらテスト広告が配信される様になりました。admobのサーバーへのdevice ID反映に時間がかかるのかも。