インタースティシャル広告は、ユーザーが閉じるまでアプリのインターフェース上に全画面表示される広告です。通常は、アプリの操作が切り替わる合間や、ゲームのレベルが切り替わる合間など、画面が切り替わる自然なタイミングで表示されます。アプリにインタースティシャル広告が表示されると、ユーザーは広告をタップしてリンク先に移動するか、広告を閉じてアプリに戻るかを選択できます。事例紹介。
このガイドでは、Google Mobile Ads C++ SDK を使用して、インタースティシャル広告を Android アプリおよび iOS アプリに組み込む方法について説明します。
前提条件
- スタートガイドの手順を完了します。
- (Android のみ)JNI
jobject
参照の取り扱いに精通していること(Android JNI のヒントをご覧ください)。
必ずテスト広告でテストする
アプリの作成とテストでは、実際の配信中の広告ではなくテスト広告を使用するようにしてください。実際の広告を使用すると、アカウントが停止される可能性があります。
テスト広告を読み込む最も簡単な方法は、インタースティシャル広告専用のテスト広告ユニット ID を使用することです。この ID はデバイス プラットフォームによって異なります。
- Android:
ca-app-pub-3940256099942544/1033173712
- iOS:
ca-app-pub-3940256099942544/4411468910
この API は、すべてのリクエストに対してテスト広告を返すように特別に構成されており、独自のアプリでコーディング、テスト、デバッグを行うときに自由に使用できます。アプリを公開する前に、必ず独自の広告ユニット ID に置き換えてください。
Mobile Ads SDK のテスト広告の仕組みについて詳しくは、テスト広告をご覧ください。
実装
インタースティシャル広告を実装する主な手順は次のとおりです。
- 広告を読み込みます。
- コールバックを登録します。
- 広告を表示し、そのライフサイクル イベントを処理します。
InterstitialAd
を構成する
インタースティシャル広告は InterstitialAd
オブジェクトに表示されるため、インタースティシャル広告をアプリに統合する最初のステップは、InterstitialAd
オブジェクトを作成して初期化することです。
アプリの C++ コードにヘッダー「
#include "firebase/gma/interstial_ad.h"
」を追加します。InterstitialAd
オブジェクトを宣言してインスタンス化します。firebase::gma::InterstitialAd* interstitial_ad; interstitial_ad = new firebase::gma::InterstitialAd();
親ビューを
AdParent
型にキャストしてInterstitialAd
インスタンスを初期化します。親ビューは、AndroidActivity
への JNIjobject
参照、または iOSUIView
へのポインタです。// 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);
Future を変数として保持する代わりに、
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
は使い捨てオブジェクトです。つまり、一度インタースティシャル広告を表示すると、再度表示することはできません。おすすめの方法は、FullScreenContentListener
の OnAdDismissedFullScreenContent()
メソッドで別のインタースティシャル広告を読み込み、前のインタースティシャル広告の表示が終了したらすぐに次のインタースティシャル広告の読み込みを開始できるようにすることです。
広告を表示する
インタースティシャル広告は、アプリの操作が自然に一時停止するタイミングで表示されます。ゲームのレベルが切り替わる合間やユーザーがタスクを完了した直後などが良い例です。FullScreenContentListener
を使用すると、広告がいつ全画面表示されたかを判断できますが、Show()
が返す Future も、広告が正常に表示されたことを示します。
firebase::Future<void> result = interstitial_ad->Show();
ベスト プラクティス
- インタースティシャル広告がアプリに適した広告タイプかどうかを検討します。
- インタースティシャル広告は、画面の切り替わりがあるアプリで最適に機能します。画像の共有やゲームレベルのクリアなど、アプリ内のタスクの終了が、そのようなポイントを生み出します。ユーザーは操作の中断を予期しているため、ユーザー エクスペリエンスを損なうことなくインタースティシャル広告を表示できます。アプリのワークフローのどの時点でインタースティシャル広告を表示するか、またユーザーがどのような反応する可能性があるかを考慮してください。
- インタースティシャル広告を表示する際はアクションを一時停止してください。
- インタースティシャル広告には、テキスト、イメージ、動画など、さまざまなタイプがあります。アプリでインタースティシャル広告を表示する際は、広告で利用できるよう、一部のリソースの使用を一時停止することが重要です。たとえば、インタースティシャル広告を表示するための呼び出しを行う場合は、アプリが生成するオーディオ出力を一時停止します。サウンドの再生は、インストール済みの
FullScreenContentListener
のOnAdDismissedFullScreenContent
メソッドで再開できます。このメソッドは、ユーザーが広告の操作を完了すると呼び出されます。また、広告を表示している間は、負荷の高い計算処理(ゲームループなど)を一時的に停止することをおすすめします。これにより、グラフィックが遅くなったり、反応しなくなったり、動画が途切れたりすることがありません。 - 読み込み時間は十分に確保してください。
- インタースティシャル広告を適切なタイミングで表示することも重要ですが、それと同様に、ユーザーが読み込みを待つ必要がないようにすることも重要です。表示する前に広告を読み込むことで、表示されるときにあらかじめインタースティシャル広告を表示できます。
- 大量の広告をユーザーに表示することは避けてください。
- アプリでのインタースティシャル広告の表示頻度を増やすことは、増収に効果的な方法のように思えますが、ユーザー エクスペリエンスが低下し、クリック率が低下する可能性もあります。ユーザーがアプリを楽しめなくなるほど頻繁に邪魔されないようにします。
- インタースティシャルの表示に読み込み完了 Future を使用しないでください。
- ユーザー エクスペリエンスが低下する可能性があります。代わりに、表示が必要になる前に広告をプリロードします。
補足資料
GitHub の例
- GitHub にあるサンプルのクイックスタート アプリのソースコードを表示する。
Mobile Ads Garage の動画チュートリアル
成功事例
次のステップ
- 独自のインタースティシャル広告ユニットを AdMob 管理画面で作成します(まだ作成していない場合)。
- 詳しくは、広告のターゲット設定とインタースティシャル広告のガイドラインをご覧ください。