インタースティシャル広告

インタースティシャル広告は、ホストアプリのインターフェースを覆うようにフルスクリーンで表示される広告です。一般的には、アクティビティが切り替わるタイミングやゲームのレベルが切り替わる合間など、操作中にアプリで画面の切り替えが起きるタイミングで表示されます。アプリにインタースティシャル広告が表示されると、ユーザーは広告をタップしてリンク先 URL に移動するか、広告を閉じてアプリに戻るかを選択することとなります。

このガイドでは、インタースティシャル広告を Android アプリに統合する方法について説明します。

前提条件

インタースティシャル広告オブジェクトを作成する

インタースティシャル広告は、InterstitialAd オブジェクトを使用してリクエストし、表示します。まずは、InterstitialAd をインスタンス化し、その広告ユニット ID を設定する必要があります。この手順は、Activity の onCreate() メソッドで行います。

Java

package ...

import com.google.android.gms.ads.InterstitialAd;

public class MainActivity extends Activity {

    private InterstitialAd mInterstitialAd;

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

        MobileAds.initialize(this,
            "ca-app-pub-3940256099942544~3347511713");

        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
    }
}

Kotlin

class MainActivity : Activity() {

    private lateinit var mInterstitialAd: InterstitialAd

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

        MobileAds.initialize(this,
            "ca-app-pub-3940256099942544~3347511713")

        mInterstitialAd = InterstitialAd(this)
        mInterstitialAd.adUnitId = "ca-app-pub-3940256099942544/1033173712"
    }
}

アクティビティの有効期間中は、1 つの InterstitialAd オブジェクトで複数のインタースティシャル広告をリクエストし、表示することができるため、オブジェクトの作成は 1 度で済みます。

テストでは常にテスト広告を使用する

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

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

ca-app-pub-3940256099942544/1033173712

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

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

広告を読み込む

インタースティシャル広告を読み込むには、InterstitialAd オブジェクトの loadAd() メソッドを呼び出します。このメソッドは、AdRequest オブジェクトを単一のパラメータとして受け取ります。

Java

package ...

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

public class MainActivity extends Activity {

    private InterstitialAd mInterstitialAd;

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

        MobileAds.initialize(this,
            "ca-app-pub-3940256099942544~3347511713");

        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
        mInterstitialAd.loadAd(new AdRequest.Builder().build());
    }
}

Kotlin

class MainActivity : Activity() {

    private lateinit var mInterstitialAd: InterstitialAd

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

        MobileAds.initialize(this,
            "ca-app-pub-3940256099942544~3347511713")

        mInterstitialAd = InterstitialAd(this)
        mInterstitialAd.adUnitId = "ca-app-pub-3940256099942544/1033173712"
        mInterstitialAd.loadAd(AdRequest.Builder().build())
    }
}

広告を表示する

インタースティシャル広告は、アプリの流れが一時的に中断する自然なタイミングで表示される必要があります。ゲームのレベルが切り替わる合間やタスクが完了した直後などが良い例です。インタースティシャル広告を表示するには、isLoaded() メソッドを使用して読み込みが完了したことを確認してから、show() を呼び出します。上のサンプルコードのインタースティシャル広告は、以下のようにボタンの OnClickListener に表示できます。

Java

mMyButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        } else {
            Log.d("TAG", "The interstitial wasn't loaded yet.");
        }
    }
});

Kotlin

mMyButton.setOnClickListener {
    if (mInterstitialAd.isLoaded) {
        mInterstitialAd.show()
    } else {
        Log.d("TAG", "The interstitial wasn't loaded yet.")
    }
}

広告イベント

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

InterstitialAd オブジェクトで AdListener を使用するには、setAdListener() メソッドを呼び出します。

Java

mInterstitialAd.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 the ad is displayed.
    }

    @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 interstitial ad is closed.
    }
});

Kotlin

mInterstitialAd.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 the ad is displayed.
    }

    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 interstitial ad is closed.
    }
}

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

オーバーライド可能なメソッド
onAdLoaded() onAdLoaded() メソッドは、広告の読み込みが完了すると実行されます。
onAdFailedToLoad() onAdFailedToLoad() メソッドには、発生したエラーの種類を示す errorCode パラメータが含まれています。このパラメータの値は、AdRequest クラスの定数として定義された、次のいずれかの値になります。
  • ERROR_CODE_INTERNAL_ERROR - 広告サーバーから無効な応答を受け取った場合などに発生する内部エラーです。
  • ERROR_CODE_INVALID_REQUEST - 広告リクエストが無効(広告ユニット ID が不適切だった場合など)。
  • ERROR_CODE_NETWORK_ERROR - ネットワーク接続が原因で広告をリクエストできなかった。
  • ERROR_CODE_NO_FILL - 広告リクエストは成功したものの、広告枠の不足が原因で広告が返されなかったときに生じるエラーです。
onAdOpened() 広告が端末の画面いっぱいに表示されたときに、このメソッドが呼び出されます。
onAdLeftApplication() このメソッドは、ユーザーが別のアプリ(Google Play など)を起動し、現在のアプリがバックグラウンドに移動すると呼び出されます。
onAdClosed() このメソッドは、ユーザーが「閉じる」アイコンまたは「戻る」ボタンをタップして、インタースティシャル広告を閉じるときに呼び出されます。アプリで音声出力やゲームループを一時停止している場合は、ここで再開すると効果的です。

AdListener を使用して再読み込みする

インタースティシャル広告を表示した後に新しいインタースティシャル広告を読み込むには、AdListener クラスの onAdClosed() メソッドを使うと便利です。

Java

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

        MobileAds.initialize(this,
            "ca-app-pub-3940256099942544~3347511713");

    mInterstitialAd = new InterstitialAd(this);
    mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
    mInterstitialAd.loadAd(new AdRequest.Builder().build());

    mInterstitialAd.setAdListener(new AdListener() {
        @Override
        public void onAdClosed() {
            // Load the next interstitial.
            mInterstitialAd.loadAd(new AdRequest.Builder().build());
        }

    });
}
...

Kotlin

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

        MobileAds.initialize(this,
            "ca-app-pub-3940256099942544~3347511713")

    mInterstitialAd = InterstitialAd(this)
    mInterstitialAd.adUnitId = "ca-app-pub-3940256099942544/1033173712"
    mInterstitialAd.adListener = object : AdListener() {
        override fun onAdClosed() {
            mInterstitialAd.loadAd(AdRequest.Builder().build())
        }
    }
}
...

推奨事項

インタースティシャル広告が自分のアプリに適しているかどうかをよく見極めましょう。
インタースティシャル広告は、画面の切り替わりがあるアプリに適しています。画像の共有やあるゲームレベルのクリアなど、アプリ内で特定のタスクが完了したタイミングがこうした移行ポイントになります。こうしたタイミングであれば、ユーザーも合間が入ることを想定しているため、インタースティシャル広告を表示してもユーザーの操作性を損なうことはありません。アプリ内のどの時点でインタースティシャル広告を表示し、ユーザーがそれにどう反応すると考えられるか、把握しておくとよいでしょう。
インタースティシャル広告を表示する際には必ずアクションを一時停止しましょう。
インタースティシャル広告には、テキスト、イメージ、動画などのさまざまな種類があります。インタースティシャル広告を表示する際は、広告で使用する分を考慮し、アプリの一部のリソースを一時停止させることが重要です。たとえばインタースティシャル広告を呼び出して表示する際は、アプリの音声出力を一時停止します。音声出力はイベント ハンドラ onAdClosed() で再開できます。このハンドラはユーザーが広告に対する操作を完了すると呼び出されます。この広告の表示中は、複雑な計算処理(ゲームループなど)も一時停止することをおすすめします。こうすると、画像の読み込みが遅くなったり反応しなくなったり、動画が頻繁に途切れたりする恐れがなくなります。
十分な読み込み時間を確保しましょう。
インタースティシャル広告を適切なタイミングで表示することも大事ですが、それと同様に読み込みの待ち時間を短くすることも重要です。show() の呼び出しの前に loadAd() を呼び出すことで、表示される前の段階でインタースティシャル広告の読み込みを完了させることができます。
過度に広告を表示しないよう注意しましょう。
インタースティシャル広告の表示頻度を増やすことで収益の向上が見込める一方、ユーザーの操作性は損なわれ、クリック率の低下にもつながります。ユーザーがアプリを楽しめなくなるため、何度も広告を表示するのは避けてください。

ソースコード

その他のリソース

GitHub のサンプル

  • インタースティシャル広告のサンプルアプリ: Java | Kotlin

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

次のステップ

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。