バナー広告

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

このガイドでは、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 の定数値
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)

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

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

ハードウェア アクセラレーションはデフォルトで有効になっていますが、一部のアプリでは無効にできます。これに該当する場合は、広告を使用する 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 の動画チュートリアル

成功事例

次のステップ

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