最近見聞きするようになったAdMobのアダプティブバナー (Adaptive Banners) について説明します。
アダプティブバナーとは?
スマートバナーと何が違うの?ってすぐに思うと思います。公式サイトの説明読んでも、イマイチ分かりません。動きを見ていると、同一スマホでもバナーやスマートバナーの広告が両方表示されるハイブリッドな広告表示になっているようにしか見えない…。
バナー | スマートバナー | アダプティブバナー |
---|---|---|
サンプルコード
サンプルコード自体はMobile Ads SDK (Android)にあります。
基本的に、通常のバナー広告を表示する方法と同じです。AdSizeにAdSize.SMART_BANNERを指定するのではなく、以下のようにデバイスのdensity (論理密度) と広告表示エリアのサイズから計算したDPに基づいたAdSizeを指定する点が異なるだけで、簡単に対応できます。
DPとは?とかDPとPixelの変換方法などについては、こちらを参照して下さい。
注意点としては、日本語サイトのサンプルプログラムではAdSize.getCurrentOrientationBannerAdSizeWithWidthが利用されていますが、これは、18.3.0から名前が変更されて非推奨なAPIになっているため、英語ページのサンプルプログラムのAdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSizeを利用して下さい。
API | 説明 |
---|---|
AdSize.getLandscapeAnchoredAdaptiveBannerAdSize | 横画面用 |
AdSize.getPortraitAnchoredAdaptiveBannerAdSize | 縦画面用 |
AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize | 現在の画面用 (自動) |
private val adSize: AdSize get() {
val display = windowManager.defaultDisplay
val outMetrics = DisplayMetrics()
display.getMetrics(outMetrics)
val density = outMetrics.density
var adWidthPixels = ad_view_container.width.toFloat()
if (adWidthPixels == 0f)
adWidthPixels = outMetrics.widthPixels.toFloat()
val adWidth = (adWidthPixels / density).toInt()
return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
}
その他
AdSize.ADAPTIVE_BANNERとか用意して、AdMob SDK側で上記のサンプルコードのような事を対応してくれても良いような気がしますが…。