このガイドでは、リワード広告を Android アプリに統合する方法について説明します。
始める前に
続行する前に、次のことを実施してください。
- GMA Next-Gen SDK を設定します。
- テスト リワード広告ユニット ID
/6499/example/rewardedを使用します。- アプリの開発とテストでは、配信中の実際の広告ではなく、必ずテスト広告を使用してください。テスト広告ユニット 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
private fun listenToAdEvents() { // Listen for ad events. val ad = rewardedAd if (ad == null) { Log.e(TAG, "Rewarded ad is not ready yet.") return } ad.adEventCallback = object : RewardedAdEventCallback { override fun onAdShowedFullScreenContent() { // Rewarded ad did show. } override fun onAdDismissedFullScreenContent() { // Rewarded ad did dismiss. rewardedAd = null } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError ) { // Rewarded ad failed to show. Log.e(TAG, "Rewarded ad failed to show: ${fullScreenContentError.message}") } override fun onAdImpression() { // Rewarded ad did record an impression. } override fun onAdClicked() { // Rewarded ad did record a click. } } }
Java
private void listenToAdEvents() { // Listen for ad events. if (rewardedAd == null) { Log.e(TAG, "Rewarded ad is not ready yet."); return; } rewardedAd.setAdEventCallback( new RewardedAdEventCallback() { @Override public void onAdShowedFullScreenContent() { // Rewarded ad did show. } @Override public void onAdDismissedFullScreenContent() { // Rewarded ad did dismiss. rewardedAd = null; } @Override public void onAdFailedToShowFullScreenContent( FullScreenContentError fullScreenContentError) { // Rewarded ad failed to show. Log.e(TAG, "Rewarded ad failed to show: " + fullScreenContentError.getMessage()); } @Override public void onAdImpression() { // Rewarded ad did record an impression. } @Override public void onAdClicked() { // Rewarded ad did record a click. } }); }
省略可: サーバーサイド認証(SSV)コールバックを検証する
サーバーサイド認証コールバックで追加データを必要とするアプリでは、リワード広告のカスタムデータ機能を使用してください。リワード広告オブジェクトに設定されている文字列値はすべて、SSV コールバックの custom_data クエリ パラメータに受け渡されます。カスタムデータ値が設定されていない場合、SSV コールバックは custom_data クエリ パラメータ値を持ちません。
次のコードサンプルは、広告を表示する前に、リワード広告オブジェクトにカスタムデータを設定する方法を示しています。
Kotlin
Java
SAMPLE_CUSTOM_DATA_STRING は、実際のカスタムデータに置き換えてください。
省略可: プリロード イベントをリッスンする
広告のプリロードを開始したら、プリロード イベントを登録して、広告のプリロードが成功したとき、プリロードが失敗したとき、広告キャッシュが枯渇したときに通知を受け取ります。
次の例は、プリロード広告イベントを登録する方法を示しています。
Kotlin
val preloadCallback = object : PreloadCallback { override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) { Log.d(TAG, "Rewarded preload ad $preloadId failed to load with error: ${adError.message}") } override fun onAdsExhausted(preloadId: String) { Log.i(TAG, "Rewarded preload ad $preloadId is not available") } override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) { Log.i(TAG, "Rewarded preload ad $preloadId is available") } } val adRequest = AdRequest.Builder(adUnitId).build() val preloadConfig = PreloadConfiguration(adRequest) RewardedAdPreloader.start(adUnitId, preloadConfig, preloadCallback)
Java
PreloadCallback preloadCallback = new PreloadCallback() { @Override public void onAdFailedToPreload(String preloadId, LoadAdError adError) { Log.d( TAG, String.format( "Rewarded preload ad %s failed to load with error: %s", preloadId, adError.getMessage())); } @Override public void onAdsExhausted(String preloadId) { Log.i(TAG, "Rewarded preload ad " + preloadId + " is not available"); } @Override public void onAdPreloaded(String preloadId, ResponseInfo responseInfo) { Log.i(TAG, "Rewarded preload ad " + preloadId + " is available"); } }; AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest); RewardedAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
広告の読み込みに失敗すると、GMA Next-Gen SDK は自動的に広告をプリロードし、プリロードされた構成のリクエストの失敗を再試行します。
省略可: 広告の利用可能性を確認する
広告が利用可能かどうかを確認する必要がある場合は、広告の利用可能性を確認します。次の例は、プリロードされた広告が利用可能かどうかを確認する方法を示しています。
Kotlin
private fun isAdAvailable(adUnitId: String): Boolean { return RewardedAdPreloader.isAdAvailable(adUnitId) }
Java
private boolean isAdAvailable(String adUnitId) { return RewardedAdPreloader.isAdAvailable(adUnitId); }
省略可: バッファサイズを設定する
バッファサイズは、メモリに保持されるプリロード済み広告の数を制御します。デフォルトでは、Google はメモリ消費量と広告配信のレイテンシのバランスを取るようにバッファサイズを最適化します。カスタム バッファサイズを設定して、メモリに保持する広告の数を増やすことができます。
次の例は、プリロードされた 2 つの広告のバッファサイズを設定する方法を示しています。
Kotlin
val adRequest = AdRequest.Builder(adUnitId).build() // Define a PreloadConfiguration and set the buffer size to 2 preloaded ads. val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 2) RewardedAdPreloader.start(adUnitId, preloadConfig)
Java
AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); // Define a PreloadConfiguration and set the buffer size to 2 preloaded ads. PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 2); RewardedAdPreloader.start(adUnitId, preloadConfig);
プリロード キャッシュの上限
GMA Next-Gen SDK は、すべての広告ユニットとプリロード ID にわたるプリロードされた広告の総数にアプリ全体の制限を適用します。
- デフォルトの上限: Google は最大 6 個のプリロードされた広告をメモリに保持します。この上限は、すべての形式とプリロード ID で共有されます。
- 各プリロード ID のバッファサイズを 2 にすることをおすすめします。
省略可: 広告のプリロードを停止する
セッションで特定のプリロード ID の広告を再度表示する必要がない場合は、広告のプリロードを停止できます。特定のプリロード ID の広告の読み込みを停止するには、プリロード ID を指定して destroy メソッドを呼び出します。destroy メソッドを呼び出すと、プリロード ID に関連付けられているプリロードされた広告がすべてキャッシュから削除されます。
次の例は、広告のプリロードを停止する方法を示しています。
Kotlin
private fun stopPreloading(adUnitId: String) { // Stops the preloading and destroy preloaded ads. RewardedAdPreloader.destroy(adUnitId) }
Java
private void stopPreloading(String adUnitId) { // Stops the preloading and destroy preloaded ads. RewardedAdPreloader.destroy(adUnitId); }
省略可: レスポンス情報を読み取る
キャッシュから広告を削除せずに、次にプリロードされる広告のレスポンス情報を読み取ります。
次の例は、次のプリロードされた広告レスポンス情報を読み取る方法を示しています。
Kotlin
val responseInfo = RewardedAdPreloader.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 = RewardedAdPreloader.peekAdResponseInfo(preloadId); if (responseInfo == null) { Log.e(TAG, "Failed to peek ad response info."); return; } Log.d(TAG, "Peeked ad response ID: " + responseInfo.getResponseId());