バナー広告

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

バナー広告は、デバイス画面の上部または下部に表示されるアプリのレイアウト内の一部分に占有されます。アプリの操作中は画面に表示され続け、一定の時間が経過すると自動的に更新されます。モバイル広告を初めてご利用の場合は、この広告から始めるのが最適です。

このガイドでは、バナー広告をAd Manager から Android アプリに統合する方法を説明します。コード スニペットと手順のほか、バナーの適切なサイズ設定に関する情報や、参考リンクを紹介しています。

Prerequisites

レイアウトへの AdManagerAdView 追加

バナーを表示するための最初のステップは、バナーを表示する Activity または Fragment のレイアウトに AdManagerAdView を配置することです。最も簡単な方法は、対応する XML レイアウト ファイルに 1 つを追加する方法です。以下に、アクティビティの 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 パラメータを使用します。

ActivityonCreate() メソッドで広告を読み込む方法の例を次に示します。

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 クラスを使用してリッスンできます。

AdManagerAdViewAdListener を使用するには、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、WxH) 説明 可用性 AdSize 定数
320×50 バナー 携帯電話とタブレット BANNER
320×100 バナー(大) 携帯電話とタブレット LARGE_BANNER
300×250 IAB レクタングル(中) 携帯電話とタブレット MEDIUM_RECTANGLE
468×60 IAB フルサイズ バナー タブレット FULL_BANNER
728×90 IAB リーダーボード タブレット LEADERBOARD
指定の幅 x アダプティブの高さ アダプティブ バナー 携帯電話とタブレット N/A
画面の幅×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 デモアプリで複数の広告サイズを実装するには、アド マネージャーの複数の広告サイズの例をご覧ください。

手動インプレッションのカウント

インプレッションを記録するタイミングについて特別な条件がある場合は、インプレッション ping をアド マネージャーに手動で送信できます。その場合は、広告を読み込む前に、手動インプレッションで 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 アクセラレーション ガイドをご覧ください。アクティビティが無効になっている場合、個々の広告ビューではハードウェア アクセラレーションを有効にできません。そのため、アクティビティ自体でハードウェア アクセラレーションが有効になっている必要があります。

参考情報

GitHub の例

Mobile Ads Garage の動画チュートリアル