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


インタースティシャル広告は、ユーザーが閉じるまでアプリのインターフェース上に全画面表示される広告です。通常は、次のアクティビティに移行する前やゲームレベルをクリアした後の合間など、アプリの操作中に画面が切り替わるタイミングで表示されます。アプリにインタースティシャル広告が表示されると、ユーザーは広告をタップしてリンク先 URL に移動するか、広告を閉じてアプリに戻るかを選択することになります。 事例紹介

このガイドでは、Google Mobile Ads C++ SDK を使用して、Android アプリと iOS アプリにインタースティシャル広告を組み込む方法について説明します。

前提条件

必ずテスト広告でテストする

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

テスト広告を読み込むには、次に示すインタースティシャル広告向けのテスト専用広告ユニット ID を使う方法が便利です。この ID はデバイス プラットフォームによって異なります。

  • Android: ca-app-pub-3940256099942544/1033173712
  • iOS: ca-app-pub-3940256099942544/4411468910

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

Mobile Ads SDK のテスト広告の仕組みについて詳しくは、 テスト広告

実装

インタースティシャル広告を組み込む主な手順は、以下のとおりです。

  1. 広告を読み込みます。
  2. コールバックを登録します。
  3. 広告を表示し、そのライフサイクル イベントを処理します。

InterstitialAd を構成する

インタースティシャル広告は InterstitialAd オブジェクトに表示されるので、最初のステップは アプリにインタースティシャル広告を組み込む際は、 InterstitialAd オブジェクト。

  1. アプリの C++ コードに次のヘッダーを追加します。

     #include "firebase/gma/interstial_ad.h"
    

  2. InterstitialAd オブジェクトを宣言してインスタンス化します。

     firebase::gma::InterstitialAd* interstitial_ad;
     interstitial_ad = new firebase::gma::InterstitialAd();
    

  3. 親ビューを VM にキャストして InterstitialAd インスタンスを初期化します。 AdParent 型。親ビューは、Android Activity への JNI jobject 参照または iOS UIView へのポインタです。

    // my_ad_parent is a jobject reference to an Android Activity or
    // a pointer to an iOS UIView.
    firebase::gma::AdParent ad_parent =
      static_cast<firebase::gma::AdParent>(my_ad_parent);
    firebase::Future<void> result = interstitial_ad->Initialize(ad_parent);
    
  4. フューチャーを変数として保持する代わりに、InterstitialAd オブジェクトで InitializeLastResult() を呼び出して、初期化オペレーションのステータスを定期的に確認することもできます。役立つ可能性があります を使用して、グローバル ゲームループの初期化プロセスを追跡します。

    // Monitor the status of the future in your game loop:
    firebase::Future<void> result = interstitial_ad->InitializeLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      // Initialization completed.
      if(future.error() == firebase::gma::kAdErrorCodeNone) {
        // Initialization successful.
      } else {
        // An error has occurred.
      }
    } else {
      // Initialization on-going.
    }
    

firebase::Future の使用について詳しくは、以下をご覧ください。 Future を使用してメソッドの完了ステータスをモニタリングする 呼び出し

広告を読み込む

広告の読み込みは、InterstitialAd オブジェクトの LoadAd() メソッドを使用して行います。読み込みメソッドでは、 InterstitialAd オブジェクトであり、広告ユニット ID と AdRequest があることを確認します。 渡されます。firebase::Future が返されます。これを使用して、読み込みオペレーションの状態と結果をモニタリングできます。

次のコードは、InterstitialAd が正常に初期化された後に広告を読み込む方法を示しています。

firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = interstitial_ad->LoadAd(interstitial_ad_unit_id, ad_request);

コールバックに登録する

インタースティシャル広告の表示イベントとライフサイクル イベントの通知を受け取るには、FullScreenContentListener クラスを拡張する必要があります。カスタム FullScreenContentListener サブクラスは、 InterstitialAd::SetFullScreenContentListener() メソッドを呼び出し、 広告が正常または正しく表示されなかった場合のコールバックと、 破棄されます。

次のコードは、クラスを拡張して広告に割り当てる方法を示しています。

  class ExampleFullScreenContentListener
      : public firebase::gma::FullScreenContentListener {

   public:
    ExampleFullScreenContentListener() {}

    void OnAdClicked() override {
      // This method is invoked when the user clicks the ad.
    }

    void OnAdDismissedFullScreenContent() override {
     // This method is invoked when the ad dismisses full screen content.
    }

    void OnAdFailedToShowFullScreenContent(const AdError& error) override {
      // This method is invoked when the ad failed to show full screen content.
      // Details about the error are contained within the AdError parameter.
    }

    void OnAdImpression() override {
      // This method is invoked when an impression is recorded for an ad.
    }

    void OnAdShowedFullScreenContent() override {
      // This method is invoked when the ad showed its full screen content.
    }
  };

  ExampleFullScreenContentListener* full_screen_content_listener =
    new ExampleFullScreenContentListener();
  interstitial_ad->SetFullScreenContentListener(full_screen_content_listener);

InterstitialAd は使い捨てオブジェクトです。つまりインタースティシャルが 再表示することはできません。別のコンテナを読み込み、 OnAdDismissedFullScreenContent() メソッドで FullScreenContentListener にすると、次のインタースティシャル広告の読み込みが開始されます。 すぐに結果が表示されます

広告を表示する

インタースティシャルは、アプリの操作が一時中断するタイミングで表示される必要があります。ゲームレベルをクリアした後の合間やタスクが完了した直後などが適しています。FullScreenContentListener を使用すると、広告がいつ表示されたかを判断できます。 全画面表示されたコンテンツを表示する場合、Show() によって返される Future もシグナルを 広告が正常に表示されたとき

  firebase::Future<void> result = interstitial_ad->Show();

ベスト プラクティス

インタースティシャル広告がアプリに適した広告タイプかどうかを検討します。
インタースティシャル広告は、自然な移行ポイント(画面の切り替わりなど)があるアプリに適しています。「 画像の共有やゲームの完了など、アプリ内のタスクの終了 そのようなポイントが生まれます。ユーザーが休憩を期待しているため ユーザーの操作を妨げずにインタースティシャル広告を 体験できますアプリのワークフローのどの時点で ユーザーの反応を予測します。
インタースティシャル広告を表示する際はアクションを一時停止してください。
インタースティシャル広告にはさまざまなタイプ(テキスト、イメージ、 使用できます。アプリの画面にコードを表示する際は、 一部のリソースの使用を一時停止し、広告が 活用してください。たとえば、インタースティシャル広告を表示するための呼び出しを行う場合は、アプリで行っている音声出力を一時停止してください。音声出力は、インストールされている FullScreenContentListenerOnAdDismissedFullScreenContent メソッドで再開できます。このメソッドは、ユーザーが広告の操作を終了すると呼び出されます。また、広告の表示中は、計算の集中処理(ゲームループなど)を一時的に停止することをご検討ください。こうすることで、グラフィックの読み込みが遅れたり、反応が停止したり、動画が途切れたりしなくなります。
十分な読み込み時間を確保しましょう。
インタースティシャル広告は一定の間隔で ユーザーが待たなくていいようにすることも 読み込みます。広告の読み込みを事前に完了しておくと、表示の段階で待ち時間が発生しません。
過度に広告を表示しないよう注意しましょう。
インタースティシャル広告の表示頻度を増やすことで収益の向上が見込める一方、ユーザー エクスペリエンスが損なわれ、クリック率の低下につながります。ユーザーがアプリを楽しめなくなるほど頻繁に広告を表示しないでください。
読み込み完了フューチャーを使用してインタースティシャルを表示しないようにしましょう。
ユーザー エクスペリエンスが低下する可能性があります。代わりに、広告を表示する前にプリロードして、

参考情報

GitHub の例

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

成功事例

次のステップ