バナー広告

バナー広告は、アプリのレイアウト内の一部分を使用する長方形の画像かテキストの広告です。ユーザーがアプリを操作している間は画面に残り、一定の時間が経過すると自動的に更新されます。モバイル広告を初めて掲載する場合は、まずこの広告から始めるのが最適です。

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

前提条件

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

バナーを表示するための最初のステップは、バナーを表示する ActivityFragment のレイアウトに AdView を配置することです。おすすめの方法は、対応する XML レイアウト ファイルに追加する方法です。以下の例では、Activity の一番下に AdView を配置しています。

main_activity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        tools:context=".MainActivity">

        <TextView android:text="@string/hello_world"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

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

</RelativeLayout>

必須の属性は次のとおりです。

  • ads:adSize - 使用する広告サイズに設定します。定数値で定義された標準サイズを使用しない場合は、代わりにカスタムサイズを設定できます。詳しくは、下記のバナーサイズに関するセクションをご覧ください。
  • ads:adUnitId - 広告を表示するアプリの広告ユニットに割り当てられている一意の ID に設定します。複数のアクティビティでバナー広告を表示する場合は、それぞれ広告ユニットが必要となります。

別の方法として、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.BANNERadView.adUnitId = "ca-app-pub-3940256099942544/6300978111"
// TODO: Add adView to your view hierarchy.

常にテスト広告でテストする

アプリの開発やテストでは実際の広告を使用せず、必ずテスト広告を使ってください。実際の広告でテストすると、アカウントが停止される場合があります。

テスト広告を読み込むには、次に示す Android バナー向けのテスト専用広告ユニット ID を使う方法が便利です。

ca-app-pub-3940256099942544/6300978111

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

Mobile Ads SDK のテスト広告の仕組みについてさらに詳しくは、テスト広告でご確認いただけます。

広告を読み込む

AdView を配置したら、次のステップとして広告を読み込みます。広告の読み込みは、AdView クラスの loadAd() メソッドで行います。このメソッドは、AdRequest パラメータを受け取ります。このパラメータには、1 つの広告リクエストに関するランタイムの情報(ターゲット設定情報など)が保持されています。

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)
    }
}

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

広告イベント

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

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

Java

mAdView.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
        // Code to be executed when an ad finishes loading.
    }

    @Override
    public void onAdFailedToLoad(int errorCode) {
        // Code to be executed when an ad request fails.
    }

    @Override
    public void onAdOpened() {
        // Code to be executed when an ad opens an overlay that
        // covers the screen.
    }

    @Override
    public void onAdClicked() {
        // Code to be executed when the user clicks on an ad.
    }

    @Override
    public void onAdLeftApplication() {
        // Code to be executed when the user has left the app.
    }

    @Override
    public void onAdClosed() {
        // Code to be executed when the user is about to return
        // to the app after tapping on an ad.
    }
});

Kotlin

mAdView.adListener = object: AdListener() {
    override fun onAdLoaded() {
        // Code to be executed when an ad finishes loading.
    }

    override fun onAdFailedToLoad(errorCode : Int) {
        // Code to be executed when an ad request fails.
    }

    override fun onAdOpened() {
        // Code to be executed when an ad opens an overlay that
        // covers the screen.
    }

    override fun onAdClicked() {
        // Code to be executed when the user clicks on an ad.
    }

    override fun onAdLeftApplication() {
        // Code to be executed when the user has left the app.
    }

    override fun onAdClosed() {
        // Code to be executed when the user is about to return
        // to the app after tapping on an ad.
    }
}

AdListener のオーバーライド可能なメソッドは、それぞれ広告のライフサイクルで生じるイベントに対応しています。

オーバーライド可能なメソッド
onAdLoaded() onAdLoaded() メソッドは、広告の読み込みが完了すると実行されます。たとえば、広告が確実に読み込まれるまで、アクティビティまたはフラグメントに AdView が追加されないようにしたい場合は、このメソッドを使用できます。
onAdFailedToLoad() onAdFailedToLoad() メソッドは、パラメータを含む唯一のメソッドです。errorCode パラメータは、発生したエラーの種類を表します。このパラメータの値は、AdRequest クラスの定数として定義された、次のいずれかの値になります。
  • ERROR_CODE_INTERNAL_ERROR - 内部でエラーが発生している(広告サーバーから無効な応答を受け取った場合など)。
  • ERROR_CODE_INVALID_REQUEST - 広告リクエストが無効(広告ユニット ID が不適切だった場合など)。
  • ERROR_CODE_NETWORK_ERROR - ネットワーク接続が原因で広告をリクエストできなかった。
  • ERROR_CODE_NO_FILL - 広告リクエストは成功したものの、広告枠の不足が原因で広告が返されなかった。
onAdOpened() ユーザーが広告をタップしたときに呼び出されるメソッドです。
onAdLeftApplication() onAdOpened() の後にユーザーが別のアプリ(Google Play など)を起動し、現在のアプリがバックグラウンドに移動すると、このメソッドが呼び出されます。
onAdClosed() ユーザーが広告のリンク先 URL にアクセスした後にアプリに戻った場合は、このメソッドが呼び出されます。一時停止中のアクティビティを再開したり、アプリを操作可能な状態にするために必要な他の動作を実行したりするには、このメソッドを使用します。 Android API デモアプリに広告リスナーのメソッドを実装する方法については、AdListener の実装例をご覧ください。

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

サイズ(単位は 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)

その他のリソース

GitHub のサンプル

  • バナー広告の最小限の実装例: Java | Kotlin

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

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

チュートリアル動画シリーズ「Mobile Ads Garage」