あとでちゃんと書きますが、Admob SDKがGoogle play開発者サービスに移行していて、巷のブログの解説記事と色々差分あるので、忘れないための覚書
- 公式Developer Guide
https://developers.google.com/mobile-ads-sdk/?hl=ja
- Admob SDKがGoogle play開発者サービスに移行する前との差分
https://developers.google.com/mobile-ads-sdk/docs/admob/play-migration?hl=ja
- Google play service sdkのsetup
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反映に時間がかかるのかも。