バナー広告は、デバイス画面の上部か下部にアプリのレイアウト内の一部分を使用して表示されます。アプリの操作中は画面に表示され続け、一定の時間が経過すると自動的に更新されます。モバイル広告を初めてお使いの場合は、この広告から始めるのが最適です。
このガイドでは、Ad Manager のバナー広告を Android アプリに統合する方法を説明します。コード スニペットと設定方法のほか、バナーの適切なサイズに関する情報、他の関連リソースへのリンクも紹介します。
Prerequisites
- スタートガイドの手順を完了していること
レイアウトに AdManagerAdView を追加する
バナーを表示するための最初のステップは、バナーを表示する Activity
または Fragment
のレイアウトに AdManagerAdView
を配置することです。最も簡単なのは、対応する XML レイアウト ファイルに追加する方法です。アクティビティの AdManagerAdView
について、次に例を示します。
# main_activity.xml ... <com.google.android.gms.ads.admanager.AdManagerAdView xmlns:ads="http://schemas.android.com/apk/res-auto" android:id="@+id/adManagerAdView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="BANNER" ads:adUnitId="/6499/example/banner"> </com.google.android.gms.ads.admanager.AdManagerAdView> ...
次の必須の属性に注意してください。
ads:adSize
- 使用する広告サイズに設定します。定数値で定義された標準サイズを使用しない場合は、代わりにカスタムサイズを設定できます。詳しくは、下記のバナーサイズに関するセクションをご覧ください。ads:adUnitId
- 広告を表示するアプリ内の広告ユニットに付与される一意の識別子に設定します。複数のアクティビティでバナー広告を表示する場合は、それぞれ広告ユニットが必要となります。
別の方法として、AdManagerAdView
をプログラムで作成することもできます。
Java
AdManagerAdView adView = new AdManagerAdView(this); adView.setAdSizes(AdSize.BANNER); adView.setAdUnitId("/6499/example/banner"); // TODO: Add adView to your view hierarchy.
Kotlin
val adView = AdManagerAdView(this) adView.adSizes = AdSize.BANNER adView.adUnitId = "/6499/example/banner" // TODO: Add adView to your view hierarchy.
常にテスト広告でテストする
アプリを作成してテストする際は、実際の本番環境広告ではなく、テスト広告を使用してください。実際の広告を使用すると、アカウントが停止される可能性があります。
テスト広告を読み込む際は、次に示す Android バナー向けのテスト専用広告ユニット ID を使うと簡単です。
/6499/example/banner
この ID は、すべてのリクエストに対してテスト広告を返す特別な ID で、アプリのコーディング、テスト、デバッグで自由に使うことができます。なお、このテスト用 ID は、アプリを公開する前に必ずご自身の広告ユニット ID に置き換えてください。
Mobile Ads SDK のテスト広告の仕組みについて詳しくは、テスト広告をご覧ください。
広告を読み込む
AdManagerAdView を作成したら、広告を読み込みます。これは、AdManagerAdView
クラスの loadAd()
メソッドで行います。そのためには、AdManagerAdRequest
パラメータを使用して、1 つの広告リクエストに関するランタイムの情報(ターゲティング情報など)を保持しておく必要があります。
Activity
の onCreate()
メソッドで広告を読み込む方法について、次に例を示します。
MainActivity(抜粋)
Java
package ... import ... import com.google.android.gms.ads.admanager.AdManagerAdRequest; import com.google.android.gms.ads.admanager.AdManagerAdView; public class MainActivity extends AppCompatActivity { private AdManagerAdView mAdManagerAdView; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAdManagerAdView = findViewById(R.id.adManagerAdView); AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build(); mAdManagerAdView.loadAd(adRequest); } }
Kotlin
package ... import ... import com.google.android.gms.ads.admanager.AdManagerAdRequest import com.google.android.gms.ads.admanager.AdManagerAdView class MainActivity : AppCompatActivity() { lateinit var mAdManagerAdView : AdManagerAdView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mAdManagerAdView = findViewById(R.id.adManagerAdView) val adRequest = AdManagerAdRequest.Builder().build() mAdManagerAdView.loadAd(adRequest) } }
これで、これでアプリにバナー広告を表示できるようになりました。
広告イベント
広告の動作をより細かくカスタマイズするには、広告のライフサイクルで生じるさまざまなイベント(読み込み、開始、終了など)を考慮します。これらのイベントは、AdListener
クラスを介してリッスンできます。
AdManagerAdView
と AdListener
を組み合わせて使用するには、setAdListener()
メソッドを呼び出します。
Java
mAdManagerAdView.setAdListener(new AdListener() { @Override public void onAdClicked() { // Code to be executed when the user clicks on an ad. } @Override public void onAdClosed() { // Code to be executed when the user is about to return // to the app after tapping on an ad. } @Override public void onAdFailedToLoad(LoadAdError adError) { // Code to be executed when an ad request fails. } @Override public void onAdImpression() { // Code to be executed when an impression is recorded // for an ad. } @Override public void onAdLoaded() { // Code to be executed when an ad finishes loading. } @Override public void onAdOpened() { // Code to be executed when an ad opens an overlay that // covers the screen. } });
Kotlin
mAdManagerAdView.adListener = object: AdListener() { override fun onAdClicked() { // Code to be executed when the user clicks on an ad. } override fun onAdClosed() { // Code to be executed when the user is about to return // to the app after tapping on an ad. } override fun onAdFailedToLoad(adError : LoadAdError) { // Code to be executed when an ad request fails. } override fun onAdImpression() { // Code to be executed when an impression is recorded // for an ad. } override fun onAdLoaded() { // Code to be executed when an ad finishes loading. } override fun onAdOpened() { // Code to be executed when an ad opens an overlay that // covers the screen. } }
AdListener
のオーバーライド可能なメソッドは、それぞれ広告のライフサイクルで生じるイベントに対応しています。
オーバーライド可能なメソッド | |
---|---|
onAdClicked()
|
onAdClicked() メソッドは、広告のクリックが記録されると呼び出されます。 |
onAdClosed()
|
onAdClosed() メソッドは、ユーザーが広告のリンク先 URL にアクセスした後にアプリに戻ると呼び出されます。一時停止中のアクティビティを再開したり、アプリを操作可能な状態にするために必要な他の動作を実行したりするには、このメソッドを使用します。
|
onAdFailedToLoad()
|
onAdFailedToLoad() メソッドは、パラメータを含む唯一のメソッドです。LoadAdError タイプのエラー パラメータは、発生したエラーを表します。詳細については、広告読み込みエラーのデバッグのドキュメントをご覧ください。
|
onAdImpression()
|
onAdImpression() メソッドは、広告のインプレッションが記録されると呼び出されます。 |
onAdLoaded()
|
onAdLoaded() メソッドは、広告の読み込みが完了すると実行されます。たとえば、広告が確実に読み込まれるまで、アクティビティまたはフラグメントに AdManagerAdView を追加するのを遅らせる場合は、ここで行うことができます。 |
onAdOpened()
|
onAdOpened() メソッドは、広告からオーバーレイを開いて画面全体が覆われた場合に呼び出されます。 |
バナーのサイズ
標準のバナーサイズについては、以下の表をご覧ください。
サイズ(単位は dp、幅×高さ) | 説明 | 取り扱い | AdSize の定数値 |
---|---|---|---|
320×50 | バナー | 携帯電話とタブレット | BANNER |
320×100 | バナー(大) | 携帯電話とタブレット | LARGE_BANNER |
300×250 | IAB レクタングル(中) | 携帯電話とタブレット | MEDIUM_RECTANGLE |
468×60 | IAB フルサイズ バナー | タブレット | FULL_BANNER |
728×90 | IAB リーダーボード | タブレット | LEADERBOARD |
指定された幅 × 最適な高さ | アダプティブ バナー | 携帯電話とタブレット | なし |
画面の幅×32、50 または 90 | スマートバナー | 携帯電話とタブレット | SMART_BANNER |
詳しくは、スマートバナーの代替となるアダプティブ バナーをご覧ください。 |
カスタム バナーサイズを定義するには、希望の AdSize
を次のように設定します。
Java
AdSize adSize = new AdSize(300, 50);
Kotlin
val adSize = AdSize(300, 50)
カスタムの広告サイズ
Google アド マネージャーでは、標準の広告ユニットのほか、任意のサイズの広告ユニットをアプリ内で配信できます。広告リクエストで定義された広告サイズ(幅、高さ)は、アプリに表示される広告ビュー(次の例の AdManagerAdView
)のサイズと一致している必要があります。
例:
Java
// Define custom AdSize of 250x250 for AdManagerAdView AdSize customAdSize = new AdSize(250, 250); AdManagerAdView adView = new AdManagerAdView(this); adView.setAdSizes(customAdSize);
Kotlin
// Define custom AdSize of 250x250 for AdManagerAdView val customAdSize = AdSize(250, 250) val adView = AdManagerAdView(this) adView.setAdSizes(customAdSize)
Android API デモアプリにカスタムの広告サイズを実装する方法については、アド マネージャーによる複数の広告サイズの実装例をご覧ください。
複数の広告サイズ
アド マネージャーでは、AdManagerAdView
の配信対象となる広告サイズを複数指定できます。SDK にこの機能を実装する前に、同じ広告ユニットをターゲティングして、異なるサイズのクリエイティブに関連付けられている広告申込情報を作成してください。
アプリで、複数の AdSize
パラメータを setAdSizes
に渡すだけです。
Java
AdManagerAdView adView = new AdManagerAdView(this); adView.setAdSizes(AdSize.BANNER, new AdSize(120, 20), new AdSize(250, 250));
Kotlin
val adView = AdManagerAdView(this) adView.setAdSizes(AdSize.BANNER, AdSize(120, 20), AdSize(250, 250))
更新時に AdManagerAdView
のサイズが変わった場合は、レイアウトが新しいサイズに合わせて自動的に調整されるようになります。
アプリでサポートされる広告サイズの変更が必要になった場合は、setAdSizes
を新しいサイズのリストで呼び出します。
Java
// Drop support for 120x20 ad size. adView.setAdSizes(AdSize.BANNER, new AdSize(250, 250));
Kotlin
// Drop support for 120x20 ad size. adView.setAdSizes(AdSize.BANNER, AdSize(250, 250))
AdManagerAdView
は、次の広告が返されるまで、最初のパラメータで渡されたサイズにデフォルトで設定されます。
XML レイアウト ファイルで ads:adSizes
属性を使用して複数の広告サイズを指定することもできます。
<com.google.android.gms.ads.admanager.AdManagerAdView
android:id="@+id/multiple_ad_sizes_view"
android:layout_width="wrap_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
ads:adSizes="BANNER,120x20,250x250"
ads:adUnitId="ad unit ID" />
Android API デモアプリに複数の広告サイズを実装する方法については、アド マネージャーによる複数の広告サイズの実装例をご覧ください。
インプレッションの手動カウント
インプレッションを記録するタイミングについて特別な条件がある場合は、インプレッションの信号をアド マネージャーに手動で送信できます。それには、広告を読み込む前に、手動によるインプレッションに対して AdManagerAdRequest
を有効にします。
Java
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder() .setManualImpressionsEnabled(true) .build();
Kotlin
val adRequest = AdManagerAdRequest.Builder() .setManualImpressionsEnabled(true) .build()
広告が正常に返され、画面に表示されていることを確認したら、インプレッションを手動で記録します。
Java
mAdManagerAdView.recordManualImpression();
Kotlin
mAdManagerAdView.recordManualImpression()
アプリ内イベント
アプリイベントを使用すると、アプリケーション コードにメッセージを送信できる広告を作成できます。アプリは、送信されたメッセージに基づいて、処理を行います。
アド マネージャー専用のアプリ内イベントをリッスンするには、AppEventListener
を使用します。これらのイベントは、広告ライフサイクルのあらゆるタイミングで(onAdLoaded()
が呼び出される前でも)発生する可能性があります。
Java
public interface AppEventListener { void onAppEvent(String name, String info); }
Kotlin
interface AppEventListener { fun onAppEvent(name: String, info: String) }
広告でアプリイベントが発生すると、void onAppEvent(String name, String info)
が呼び出されます。
このインターフェースは、アクティビティやその他のオブジェクトによって次のように実装できます。
Java
import com.google.android.gms.ads.admanager.*; public class BannerExample extends Activity implements AppEventListener { }
Kotlin
import com.google.android.gms.ads.admanager.* class BannerExample : Activity(), AppEventListener { }
次に AdManagerAdView
に渡されます。
Java
mAdManagerAdView.setAppEventListener(this);
Kotlin
mAdManagerAdView.appEventListener = this
色名を含むアプリ内イベントに応じてアプリの背景色を変更する方法について、次に例を示します。
Java
@Override public void onAppEvent(String name, String info) { if ("color".equals(name)) { if ("green".equals(info) { // Set background color to green. } else if ("blue".equals(info) { // Set background color to blue. } else { // Set background color to black. } } }
Kotlin
override fun onAppEvent(name: String?, info: String?) { if (name == "color") { when (info) { "green" -> { // Set background color to green. } "blue" -> { // Set background color to blue. } else -> { // Set background color to black. } } } }
また、対応するクリエイティブは次のとおりです。これは、色に関するアプリ内イベント メッセージをリスナーに送信します。
<html> <head> <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script> <script> document.addEventListener("DOMContentLoaded", function() { // Send a color=green event when ad loads. admob.events.dispatchAppEvent("color", "green"); document.getElementById("ad").addEventListener("click", function() { // Send a color=blue event when ad is clicked. admob.events.dispatchAppEvent("color", "blue"); }); }); </script> <style> #ad { width: 320px; height: 50px; top: 0px; left: 0px; font-size: 24pt; font-weight: bold; position: absolute; background: black; color: white; text-align: center; } </style> </head> <body> <div id="ad">Carpe diem!</div> </body> </html>
Android API デモアプリにアプリ内イベントを実装する方法については、アド マネージャーによるアプリ内イベントの実装例をご覧ください。
動画広告のハードウェア アクセラレーション
動画広告が動画広告ビューに正常に表示されるようにするには、ハードウェア アクセラレーションを有効にする必要があります。
ハードウェア アクセラレーションはデフォルトで有効になっていますが、一部のアプリでは無効にすることもできます。その場合は、広告を使用するアクティビティ クラスのハードウェア アクセラレーションを有効にすることをおすすめします。
ハードウェア アクセラレーションの有効化
ハードウェア アクセラレーションをグローバルに有効にするとアプリが正しく動作しない場合は、個々のアクティビティでの設定が可能です。ハードウェア アクセラレーションを有効または無効にするには、AndroidManifest.xml
の <application>
要素と <activity>
要素で android:hardwareAccelerated
属性を使用できます。次の例では、アプリ全体でハードウェア アクセラレーションを有効にしつつ、1 つのアクティビティで無効にしています。
<application android:hardwareAccelerated="true">
<!-- For activities that use ads, hardwareAcceleration should be true. -->
<activity android:hardwareAccelerated="true" />
<!-- For activities that don't use ads, hardwareAcceleration can be false. -->
<activity android:hardwareAccelerated="false" />
</application>
ハードウェア アクセラレーションを制御するオプションの詳細については、HW アクセラレーション ガイドをご覧ください。アクティビティが無効の場合、個々の広告ビューではハードウェア アクセラレーションを有効にできないため、アクティビティ自体でハードウェア アクセラレーションが有効になっている必要があります。