バナー広告

バナー広告は、デバイス画面の上部か下部にアプリのレイアウト内の一部分を使用して表示されます。アプリの操作中は画面に表示され続けますが、一定時間が経過すると自動的に更新されるよう設定できます。モバイル広告を初めてお使いの場合は、この広告から始めることをおすすめします。 事例紹介

このガイドでは、AdMob のバナー広告を Android アプリに組み込む方法について説明します。コード スニペットと設定手順のほか、バナーの適切なサイズに関する情報、他の関連情報へのリンクも紹介します。

前提条件

レイアウトに AdView を追加する

バナーを表示するための最初のステップは、バナーを表示する Activity または Fragment のレイアウトに AdView を配置することです。その場合は、対応する XML レイアウト ファイルにレイアウトを追加するのが最も簡単な方法です。以下は、アクティビティの AdView を示す例です。

# main_activity.xml
<com.google.android.gms.ads.AdView
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    ads:adSize="BANNER"
    ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
</com.google.android.gms.ads.AdView>

次の必須属性に注意してください。

  • ads:adSize: 使用する広告サイズに設定します。定数で定義された標準サイズを使用しない場合は、代わりにカスタムサイズを設定できます。詳しくは、バナーサイズのセクションをご覧ください。

  • ads:adUnitId: 広告を表示するアプリ内の広告ユニットに付与される一意の識別子に設定します。異なるアクティビティでバナー広告を表示する場合は、アクティビティごとに広告ユニットが必要になります。

別の方法として、AdView をプログラムで作成することもできます。

Java

AdView adView = new AdView(this);

adView.setAdSize(AdSize.BANNER);

adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
// TODO: Add adView to your view hierarchy.

Kotlin

val adView = AdView(this)

adView.adSize = AdSize.BANNER

adView.adUnitId = "ca-app-pub-3940256099942544/6300978111"
// TODO: Add adView to your view hierarchy.

テストは必ずテスト広告で行う

アプリの作成とテストでは必ずテスト広告を使用し、配信中の実際の広告は使用しないでください。実際の広告を使用すると、アカウントが停止される可能性があります。

下記の Android バナー向けのテスト専用広告ユニット ID を使うと、テスト広告を簡単に読み込むことができます。

ca-app-pub-3940256099942544/6300978111

この ID は、すべてのリクエストに対してテスト広告を返すように構成されており、アプリのコーディング、テスト、デバッグで使用できます。なお、テスト用 ID は、アプリを公開する前に必ずご自身の広告ユニット ID に置き換えてください。

Mobile Ads SDK のテスト広告の仕組みについて詳しくは、テスト広告をご覧ください。

広告を読み込む

AdView を実装したら、次に広告を読み込みます。これは、AdView クラスの loadAd() メソッドで行います。このタグは、1 つの広告リクエストに関する実行時の情報(ターゲティング情報など)を保持する AdRequest パラメータを受け取ります。

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

MainActivity(抜粋)

Java

package ...

import ...
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

public class MainActivity extends AppCompatActivity {
    private AdView mAdView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });

        mAdView = findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
    }
}

Kotlin

package ...

import ...
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdView

class MainActivity : AppCompatActivity() {

    lateinit var mAdView : AdView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        MobileAds.initialize(this) {}

        mAdView = findViewById(R.id.adView)
        val adRequest = AdRequest.Builder().build()
        mAdView.loadAd(adRequest)
    }
}

広告ユニットの更新を設定していれば、広告の読み込みに失敗した場合でも、別の広告を明示的にリクエストする必要はありません。Google Mobile Ads SDK では、AdMob 管理画面で指定された更新頻度が考慮されます。更新を有効にしていない場合は、新しいリクエストを発行する必要があります。

これで完了です。これで、アプリにバナー広告を表示できるようになりました。

広告イベント

広告の動作をさらにカスタマイズするには、広告のライフサイクルで生じるさまざまなイベント(読み込み、開始、終了など)を利用します。これらのイベントは、AdListener クラスでリッスンできます。

AdViewAdListener を使用するには、setAdListener() メソッドを呼び出します。

Java

mAdView.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

mAdView.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 を閲覧した後にアプリに戻ると呼び出されます。これを使用することで、アプリは一時停止されたアクティビティを再開したり、アプリを操作可能な状態にするために必要なその他の処理を実行したりできます。 Android API デモアプリに広告リスナー メソッドを実装するには、AdMob AdListener の例をご覧ください。
onAdFailedToLoad() onAdFailedToLoad() メソッドは、パラメータを含む唯一のメソッドです。LoadAdError タイプのエラー パラメータは、発生したエラーを示します。詳細については、広告読み込みエラーのデバッグをご覧ください。
onAdImpression() onAdImpression() メソッドは、広告のインプレッションが記録されると呼び出されます。
onAdLoaded() onAdLoaded() メソッドは、広告の読み込みが完了すると実行されます。たとえば、広告の読み込みが確実に完了するまで、アクティビティやフラグメントへの AdView の追加を遅らせたい場合は、次のようにします。
onAdOpened() onAdOpened() メソッドは、広告が画面を覆うオーバーレイを開くと呼び出されます。

広告を配置するコンテナのサイズは、バナーのサイズ以上にする必要がある。コンテナにパディングがある場合は、コンテナのサイズが実質的に縮小されます。コンテナがバナー広告に収まらない場合は、バナーは表示されず、次の警告がログに表示されます。

W/Ads: Not enough space to show ad. Needs 320x50 dp, but only has 288x495 dp.

標準のバナーサイズについては、以下の表をご覧ください。

サイズ(単位は dp、幅×高さ) 説明 対象 AdSize の定数値
320x50 バナー スマートフォンとタブレット 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)

動画広告のハードウェア アクセラレーション

バナー広告ビューで動画広告を適切に表示するには、ハードウェア アクセラレーションが有効になっている必要があります。

ハードウェア アクセラレーションはデフォルトで有効になっていますが、アプリによっては無効にすることもできます。これに該当する場合は、広告を使用する Activity クラスでハードウェア アクセラレーションを有効にすることをおすすめします。

ハードウェア アクセラレーションの有効化

ハードウェア アクセラレーションがグローバルでオンになったときにアプリが正しく動作しない場合は、個々のアクティビティに対しても制御できます。ハードウェア アクセラレーションを有効または無効にするには、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>

ハードウェア アクセラレーションの制御オプションについて詳しくは、ハードウェア アクセラレーション ガイドをご覧ください。なお、アクティビティが無効になっている場合は、個々の広告ビューでハードウェア アクセラレーションを有効にできないため、アクティビティ自体でハードウェア アクセラレーションを有効にする必要があります。

補足資料

GitHub の例

  • バナー広告の例: Java | Kotlin

  • 高度な機能のデモ: Java | Kotlin

  • バナー RecyclerView サンプルアプリ: Java

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

成功事例

次のステップ

以下のトピックを確認してください。