インタースティシャル広告は、アプリのインターフェースを覆うようにフルスクリーンで表示される広告です。この広告は、アクティビティの切り替え時やゲームレベルの合間など、アプリの操作中に画面が切り替わるタイミングで表示されます。
アプリにインタースティシャル広告が表示されると、ユーザーは広告をタップしてリンク先 URL に移動するか、広告を閉じてアプリに戻るかを選択できます。
このガイドでは、インタースティシャル広告を Android アプリに統合する方法について説明します。
始める前に
続行する前に、次のことを行ってください。
- を設定するGMA Next-Gen SDK。
- テスト用インタースティシャル広告ユニット ID
/6499/example/interstitialを使用する。- アプリの開発とテストでは、配信中の実際の広告ではなく、必ずテスト広告を使用してください。テスト広告ユニット ID を使用しない場合、Google はお客様のアカウントを一時停止することがあります。
- アプリを公開する前に、この ID を実際の広告ユニット ID に置き換えてください。
- GMA Next-Gen SDK テスト広告について詳しくは、 テスト広告を有効にするをご覧ください。
広告のプリロードについて
GMA Next-Gen SDK の広告のプリロードでは、広告の読み込みとキャッシュ保存が自動化されます。
広告のプリロードには次のようなメリットがあります。
- 参照の管理: 広告が表示されるまで参照を維持します。
- 自動再読み込み: キャッシュから広告が取得されると、新しい広告を読み込みます。
- 再試行の管理: 広告の読み込みに失敗すると、新しい広告を読み込みます。
- 有効期限の処理: 有効期限が切れる前に広告を更新します。
- キャッシュの最適化: キャッシュの順序を最適化して、優先度の高い 広告を配信します。
広告のプリロードを開始する
広告のプリロードを開始するには、アプリの起動時に start メソッドを 1 回呼び出します。start メソッドを呼び出すと、
GMA Next-Gen SDK は広告を自動的にプリロードし、
プリロードされた構成のリクエストが失敗した場合は再試行します。
次の例は、広告のプリロードを開始する方法を示しています。
Kotlin
Java
AD_UNIT_ID は、実際の広告ユニット ID に置き換えてください。
上記の例では、広告ユニット ID をプリロード ID として使用する方法を示しています。プリロード ID は、広告のプリロード構成を識別するために作成する文字列識別子です。アプリで同じ広告ユニット ID に対して複数のターゲティング構成が必要な場合は、カスタム文字列識別子を渡します。
プリロードされた広告を取得して表示する
広告を表示する場合は、pollAd メソッドを呼び出します。
GMA Next-Gen SDK は利用可能な広告を取得し、次の広告をバックグラウンドで自動的にプリロードします。利用可能な広告がない場合、GMA Next-Gen SDK は広告を返しません。
利用可能な広告オブジェクトがある場合は、show メソッドを呼び出して広告を表示します。
次の例は、プリロードされた広告を取得して表示する方法を示しています。
Kotlin
Java
広告を表示する準備が整うまで、pollAd メソッドを呼び出さないでください。広告レスポンス情報を表示せずに読み取るには、
レスポンス情報を読み取るをご覧ください。
広告イベントをリッスンする
広告を表示する前に、広告イベントをリッスンします。次の例は、広告イベントのコールバックを登録する方法を示しています。
Kotlin
// Listen for ad events. val ad = interstitialAd if (ad == null) { Log.e(TAG, "Interstitial ad is not ready yet.") return } ad.adEventCallback = object : InterstitialAdEventCallback { override fun onAdShowedFullScreenContent() { // Interstitial ad did show. } override fun onAdDismissedFullScreenContent() { // Interstitial ad did dismiss. interstitialAd = null } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError ) { // Interstitial ad failed to show. Log.e(TAG, "Interstitial ad failed to show: ${fullScreenContentError.message}") } override fun onAdImpression() { // Interstitial ad did record an impression. } override fun onAdClicked() { // Interstitial ad did record a click. } }
Java
// Listen for ad events. if (interstitialAd == null) { Log.e(TAG, "Interstitial ad is not ready yet."); return; } interstitialAd.setAdEventCallback( new InterstitialAdEventCallback() { @Override public void onAdShowedFullScreenContent() { // Interstitial ad did show. } @Override public void onAdDismissedFullScreenContent() { // Interstitial ad did dismiss. interstitialAd = null; } @Override public void onAdFailedToShowFullScreenContent( @NonNull FullScreenContentError fullScreenContentError) { // Interstitial ad failed to show. Log.e(TAG, "Interstitial ad failed to show: " + fullScreenContentError.getMessage()); } @Override public void onAdImpression() { // Interstitial ad did record an impression. } @Override public void onAdClicked() { // Interstitial ad did record a click. } });
省略可: プリロード イベントをリッスンする
広告のプリロードを開始したら、プリロード イベントに登録して、広告のプリロードが成功したとき、プリロードに失敗したとき、広告キャッシュがなくなったときに通知を受け取ります。
次の例は、広告のプリロード イベントに登録する方法を示しています。
Kotlin
val preloadCallback = // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback. object : PreloadCallback { override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) { Log.d( TAG, ("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"), ) } override fun onAdsExhausted(preloadId: String) { Log.i(TAG, "Interstitial preload ad $preloadId is not available") // [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted. } override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) { Log.i(TAG, "Interstitial preload ad $preloadId is available") } } val adRequest = AdRequest.Builder(adUnitId).build() val preloadConfig = PreloadConfiguration(adRequest) InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
Java
PreloadCallback preloadCallback = // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback. new PreloadCallback() { @Override public void onAdFailedToPreload(@NonNull String preloadId, @NonNull LoadAdError adError) { Log.d( TAG, String.format( "Interstitial preload ad %s failed to load with error: %s", preloadId, adError.getMessage())); // [Optional] Get the error response info for additional details. // ResponseInfo responseInfo = adError.getResponseInfo(); } @Override public void onAdsExhausted(@NonNull String preloadId) { Log.i(TAG, "Interstitial preload ad " + preloadId + " is not available"); // [Important] Don't call ad preloader start() or pollAd() from onAdsExhausted. } @Override public void onAdPreloaded(@NonNull String preloadId, @NonNull ResponseInfo responseInfo) { Log.i(TAG, "Interstitial preload ad " + preloadId + " is available"); } }; AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest); InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
広告の読み込みに失敗すると、GMA Next-Gen SDK は広告を自動的にプリロードし、プリロードされた構成のリクエストが失敗した場合は 再試行します。
省略可: 広告の利用可否を確認する
広告が利用可能かどうかを確認する必要がある場合は、広告の利用可否を確認します。次の例は、プリロードされた広告が利用可能かどうかを確認する方法を示しています。
Kotlin
private fun isAdAvailable(adUnitId: String): Boolean { return InterstitialAdPreloader.isAdAvailable(adUnitId) }
Java
private boolean isAdAvailable(String adUnitId) { return InterstitialAdPreloader.isAdAvailable(adUnitId); }
省略可: バッファサイズを設定する
バッファサイズは、メモリに保持されるプリロードされた広告の数を制御します。デフォルトでは、メモリ使用量と広告配信のレイテンシのバランスを取るようにバッファサイズが最適化されます。カスタム バッファサイズを設定して、メモリに保持する広告の数を増やすことができます。バッファサイズは最大 4 にすることをおすすめします。
次の例は、プリロードされた広告のバッファサイズを 4 に設定する方法を示しています。
Kotlin
val adRequest = AdRequest.Builder(adUnitId).build() // Maintain small or default buffer size unless rapid transitions are expected. val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2) InterstitialAdPreloader.start(adUnitId, preloadConfig)
Java
// Maintain small or default buffer size unless rapid transitions are expected. AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 2); InterstitialAdPreloader.start(adUnitId, preloadConfig);
プリロード キャッシュの上限
GMA Next-Gen SDK では、すべての広告ユニットとプリロード ID でプリロードされる広告の合計数にアプリ全体の上限が適用されます。
- デフォルトの上限: メモリに保持されるプリロードされた広告の数は最大 6 個です。この上限は、すべてのフォーマットとプリロード ID で共有されます。
- プリロード ID ごとにバッファサイズを 2 または 3 にすることをおすすめします。
省略可: 広告のプリロードを停止する
セッションで特定のプリロード ID の広告を再度表示する必要がない場合は、広告のプリロードを停止できます。特定のプリロード ID の広告の読み込みを停止するには、プリロード ID を指定して destroy メソッドを呼び出します。destroy メソッドを呼び出すと、プリロード ID に関連付けられているプリロードされた広告がすべてキャッシュから削除されます。
次の例は、広告のプリロードを停止する方法を示しています。
Kotlin
private fun stopPreloading(adUnitId: String) { // Stops the preloading and destroy preloaded ads. InterstitialAdPreloader.destroy(adUnitId) }
Java
private void stopPreloading(String adUnitId) { // Stops the preloading and destroy preloaded ads. InterstitialAdPreloader.destroy(adUnitId); }
省略可: レスポンス情報を読み取る
キャッシュから広告を削除せずに、次にプリロードされる広告のレスポンス情報を読み取ります。
次の例は、次にプリロードされる広告のレスポンス情報を読み取る方法を示しています。
Kotlin
val responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId) if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info.") return } Log.d(TAG, "Peeked ad response ID: ${responseInfo.responseId}")
Java
ResponseInfo responseInfo = InterstitialAdPreloader.peekAdResponseInfo(preloadId); if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info."); return; } Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());