このガイドでは、Android アプリにリワード広告を組み込む方法を説明します。
始める前に
続行する前に、次の操作を行います。
- 設定しますGMA Next-Gen SDK。
- テスト用のリワード広告ユニット ID
ca-app-pub-3940256099942544/5224354917を使用します。- アプリの開発とテストでは、配信中の実際の広告ではなく、必ずテスト広告を使用してください。テスト広告ユニット ID を使用しない場合、アカウントが停止される可能性があります。
- アプリを公開する前に、この ID を広告ユニット ID に置き換えてください。
- GMA Next-Gen SDK テスト広告について詳しくは、 テスト広告を有効にするをご覧ください。
広告のプリロードについて(ベータ版)
GMA Next-Gen SDK の広告のプリロードでは、広告の読み込みとキャッシュ保存が自動化されます。
広告のプリロードには次のようなメリットがあります。
- 参照の管理: 広告が表示されるまで参照を維持します。
- 自動再読み込み: キャッシュから広告が取得されると、新しい広告を読み込みます。
- 再試行の管理: 広告の読み込みに失敗すると、新しい広告を読み込みます。
- 有効期限の処理: 有効期限が切れる前に広告を更新します。
- キャッシュの最適化: キャッシュの順序を最適化して、優先度の高い 広告を配信します。
広告のプリロードを開始する
広告のプリロードを開始するには、start メソッドを 1 回
GMA Next-Gen SDK の初期化時に呼び出します。
start メソッドを呼び出すと、GMA Next-Gen SDK は広告を自動的にプリロードし、プリロードされた構成のリクエストが失敗した場合は再試行します。
次の例は、広告のプリロードを開始する方法を示しています。
Kotlin
Java
AD_UNIT_ID は、実際の広告ユニット ID に置き換えてください。
前の例では、広告ユニット ID をプリロード ID として使用する方法を示しています。プリロード ID は、広告のプリロード構成を識別するために作成する文字列識別子です。アプリで同じ広告ユニット ID に複数のターゲティング構成が必要な場合は、カスタム文字列識別子を渡します。
広告のプリロードでは、ターゲティング パラメータや広告リクエストの変更はサポートされていません。 リクエスト間でターゲティング パラメータを変更する必要がある場合は、 単一の読み込みを使用します。
プリロードされた広告を取得して表示する
広告を表示する前に、pollAd メソッドを呼び出します。
プリロードされた広告オブジェクトは保存しないでください。
pollAd メソッドを呼び出すと、GMA Next-Gen SDK は利用可能な広告を取得し、次の広告をバックグラウンドで自動的にプリロードします。利用可能な広告がない場合、GMA Next-Gen SDK は広告を返しません。
show メソッドを呼び出して広告を表示します。
リワード イベントを処理するには、リワード リスナーを使用します。次の例は、プリロードされた広告を取得して表示する方法を示しています。
Kotlin
Java
アプリが広告プレースメントに到達し、show メソッドを呼び出すことができる場合は、pollAd メソッドを呼び出します。プリロード コールバックで pollAd メソッドを呼び出したり、isAdAvailable メソッドをチェックして広告を保持したりしないでください。
広告を表示する前に広告メタデータを検査する
必要がある場合は、キャッシュから広告を削除せずにレスポンス情報を読み取ります。
広告イベントをリッスンする
広告を表示する前に、広告イベントをリッスンします。次の例では、広告イベントのコールバックを登録します。
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)コールバックでユーザーとアプリのコンテキストを渡すには、広告を表示する前に広告オブジェクトに検証オプションを設定します。SSV コールバックはセッション状態なしで Google からサーバーに届くため、次の省略可能な文字列を添付します。Google は、これらの文字列を変更せずに、署名付きクエリ パラメータとして SSV コールバックに転送します。
user_idクエリ パラメータ: 内部アカウント ID など、クレジットを付与するユーザーを識別します。custom_dataクエリ パラメータ: リワード プレースメント、ゲームレベル、サーバー生成のノンスなど、アプリデータを伝送します。
値を設定しない場合、Google は SSV コールバックからそのクエリ パラメータを省略します。
次の例では、広告を表示する前に広告オブジェクトにカスタムデータを設定します。
Kotlin
Java
SAMPLE_CUSTOM_DATA_STRING は、実際のカスタムデータに置き換えてください。
ポイント: custom_data クエリ パラメータは
パーセント エンコードされています。値を解析する前に、サーバーで文字列を URL デコードし、コールバック署名を確認してから、user_id または custom_data クエリ パラメータを信頼してください。
任意: Preload イベントをリッスンする
広告のプリロードを開始したら、Preload イベントに登録して、広告が正常にプリロードされたとき、プリロードに失敗したとき、または広告キャッシュがなくなったときに通知を受け取ります。
次の例は、広告のプリロード イベントを登録する方法を示しています。
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 は広告を自動的にプリロードし、プリロードされた構成のリクエストが失敗した場合は
再試行します。失敗コールバックで手動読み込みリクエストを呼び出さないでください。Preload イベント コールバック メソッドでは、pollAd、destroy、start メソッドを呼び出さないでください。コールバックでこれらのメソッドを呼び出すと、再帰的な読み込みループが発生する可能性があります。
任意: 広告の可用性を確認する
広告が利用可能かどうかを確認する必要がある場合は、広告の可用性を確認します。次の例では、プリロードされた広告が利用可能かどうかを確認します。
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 にすることをおすすめします。
任意: 広告のプリロードを停止する
アプリが広告を配信している間は、プリロードを有効にしておきます。この間、destroy メソッドは使用しないでください。セッションで特定のプリロード 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); }
任意: レスポンス情報を読み取る
キャッシュから広告を削除せずに、次のプリロードされた広告のレスポンス情報を読み取ります。広告を表示する前に広告メタデータを検査する必要がある場合は、pollAd メソッドを呼び出すのではなく、レスポンス情報を読み取ります。
次の例は、次のプリロードされた広告のレスポンス情報を読み取る方法を示しています。
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());