diff --git a/java/NextGenExample/app/src/main/java/com/example/snippets/RewardedInterstitialAdSnippets.java b/java/NextGenExample/app/src/main/java/com/example/snippets/RewardedInterstitialAdSnippets.java index c56587c..d12840a 100644 --- a/java/NextGenExample/app/src/main/java/com/example/snippets/RewardedInterstitialAdSnippets.java +++ b/java/NextGenExample/app/src/main/java/com/example/snippets/RewardedInterstitialAdSnippets.java @@ -14,14 +14,29 @@ package com.example.snippets; +import android.app.Activity; +import android.os.Bundle; +import android.util.Log; +import androidx.annotation.NonNull; +import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback; import com.google.android.libraries.ads.mobile.sdk.common.AdRequest; +import com.google.android.libraries.ads.mobile.sdk.common.AdValue; +import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError; +import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError; +import com.google.android.libraries.ads.mobile.sdk.common.PreloadCallback; import com.google.android.libraries.ads.mobile.sdk.common.PreloadConfiguration; +import com.google.android.libraries.ads.mobile.sdk.common.ResponseInfo; +import com.google.android.libraries.ads.mobile.sdk.rewarded.OnUserEarnedRewardListener; +import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardItem; import com.google.android.libraries.ads.mobile.sdk.rewardedinterstitial.RewardedInterstitialAd; +import com.google.android.libraries.ads.mobile.sdk.rewardedinterstitial.RewardedInterstitialAdEventCallback; import com.google.android.libraries.ads.mobile.sdk.rewardedinterstitial.RewardedInterstitialAdPreloader; /** Java code snippets for the developer guide. */ public final class RewardedInterstitialAdSnippets { + private static final String TAG = "RewardedInterstitialAdSnippets"; + // [START start_preload] private void startPreloading(String adUnitId) { AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); @@ -31,10 +46,177 @@ private void startPreloading(String adUnitId) { // [END start_preload] + // [START set_buffer_size] + private void setBufferSize(String adUnitId) { + AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); + PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 3); + RewardedInterstitialAdPreloader.start(adUnitId, preloadConfig); + } + + // [END set_buffer_size] + + // [START set_callback] + private void startPreloadingWithCallback(String adUnitId) { + PreloadCallback preloadCallback = + new PreloadCallback() { + @Override + public void onAdFailedToPreload(@NonNull String preloadId, @NonNull LoadAdError adError) { + Log.i( + TAG, + "Rewarded interstitial preload ad " + + preloadId + + " failed to load with error: " + + adError.getMessage()); + } + + @Override + public void onAdsExhausted(@NonNull String preloadId) { + Log.i(TAG, "Rewarded interstitial preload ad " + preloadId + " is not available"); + } + + @Override + public void onAdPreloaded(@NonNull String preloadId, @NonNull ResponseInfo responseInfo) { + Log.i(TAG, "Rewarded interstitial preload ad " + preloadId + " is available"); + } + }; + AdRequest adRequest = new AdRequest.Builder(adUnitId).build(); + PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest); + RewardedInterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback); + } + + // [END set_callback] + private void pollAd(String adUnitId) { // [START poll_ad] // Polling returns the next available ad and loads another ad in the background. final RewardedInterstitialAd ad = RewardedInterstitialAdPreloader.pollAd(adUnitId); // [END poll_ad] } + + // [START pollAndShowAd] + private void pollAndShowAd(Activity activity, String adUnitId) { + final RewardedInterstitialAd ad = RewardedInterstitialAdPreloader.pollAd(adUnitId); + + if (ad != null) { + Log.d(TAG, "Rewarded interstitial ad response info: " + ad.getResponseInfo()); + ad.setAdEventCallback( + new RewardedInterstitialAdEventCallback() { + @Override + public void onAdImpression() { + Log.d(TAG, "Rewarded interstitial ad recorded an impression."); + } + + @Override + public void onAdPaid(@NonNull AdValue value) { + Log.d( + TAG, + "Rewarded interstitial ad onPaidEvent: " + + value.getValueMicros() + + " " + + value.getCurrencyCode()); + } + }); + + // Show the ad. + ad.show( + activity, + new OnUserEarnedRewardListener() { + @Override + public void onUserEarnedReward(@NonNull RewardItem rewardItem) { + Log.d( + TAG, + "User earned reward: " + rewardItem.getAmount() + " " + rewardItem.getType()); + } + }); + } + } + + // [END pollAndShowAd] + + // [START isAdAvailable] + private boolean isAdAvailable(String adUnitId) { + return RewardedInterstitialAdPreloader.isAdAvailable(adUnitId); + } + + // [END isAdAvailable] + + // [START stop_preload] + private void stopPreloading(String adUnitId) { + // Stops the preloading and destroy preloaded ads. + RewardedInterstitialAdPreloader.destroy(adUnitId); + // Stops the preloading and destroy all ads. + RewardedInterstitialAdPreloader.destroyAll(); + } + + // [END stop_preload] + + // [START set_event_callback] + private void setEventCallback(RewardedInterstitialAd rewardedInterstitialAd) { + // Listen for ad events. + rewardedInterstitialAd.setAdEventCallback( + new RewardedInterstitialAdEventCallback() { + @Override + public void onAdShowedFullScreenContent() { + // Ad showed. + RewardedInterstitialAdEventCallback.super.onAdShowedFullScreenContent(); + } + + @Override + public void onAdDismissedFullScreenContent() { + // Ad dismissed. + RewardedInterstitialAdEventCallback.super.onAdDismissedFullScreenContent(); + } + + @Override + public void onAdFailedToShowFullScreenContent( + FullScreenContentError fullScreenContentError) { + // Ad failed to show. + RewardedInterstitialAdEventCallback.super.onAdFailedToShowFullScreenContent( + fullScreenContentError); + } + + @Override + public void onAdImpression() { + // Impression recorded. + RewardedInterstitialAdEventCallback.super.onAdImpression(); + } + + @Override + public void onAdClicked() { + // Ad clicked. + RewardedInterstitialAdEventCallback.super.onAdClicked(); + } + }); + } + // [END set_event_callback] +} + +// [START single_load] +class RewardedInterstitialActivity extends Activity { + // Sample rewarded interstitial ad unit ID. + private static final String AD_UNIT_ID = "ca-app-pub-3940256099942544/5354046379"; + private RewardedInterstitialAd rewardedInterstitialAd; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Load ads after you initialize MobileAds. + RewardedInterstitialAd.load( + new AdRequest.Builder(AD_UNIT_ID).build(), + new AdLoadCallback() { + @Override + public void onAdLoaded(RewardedInterstitialAd ad) { + // Ad loaded. + rewardedInterstitialAd = ad; + } + + @Override + public void onAdFailedToLoad(LoadAdError adError) { + // Ad failed to load. + rewardedInterstitialAd = null; + } + }); + } } +// [END single_load] diff --git a/kotlin/NextGenExample/app/src/main/java/com/example/snippets/RewardedInterstitialAdSnippets.kt b/kotlin/NextGenExample/app/src/main/java/com/example/snippets/RewardedInterstitialAdSnippets.kt index 3688c44..58bcabe 100644 --- a/kotlin/NextGenExample/app/src/main/java/com/example/snippets/RewardedInterstitialAdSnippets.kt +++ b/kotlin/NextGenExample/app/src/main/java/com/example/snippets/RewardedInterstitialAdSnippets.kt @@ -14,13 +14,28 @@ package com.example.snippets +import android.app.Activity +import android.os.Bundle +import android.util.Log +import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback import com.google.android.libraries.ads.mobile.sdk.common.AdRequest +import com.google.android.libraries.ads.mobile.sdk.common.AdValue +import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError +import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError +import com.google.android.libraries.ads.mobile.sdk.common.PreloadCallback import com.google.android.libraries.ads.mobile.sdk.common.PreloadConfiguration +import com.google.android.libraries.ads.mobile.sdk.common.ResponseInfo +import com.google.android.libraries.ads.mobile.sdk.rewardedinterstitial.RewardedInterstitialAd +import com.google.android.libraries.ads.mobile.sdk.rewardedinterstitial.RewardedInterstitialAdEventCallback import com.google.android.libraries.ads.mobile.sdk.rewardedinterstitial.RewardedInterstitialAdPreloader /** Kotlin code snippets for the developer guide. */ private class RewardedInterstitialAdSnippets { + companion object { + private const val TAG = "RewardedInterstitialAdSnippets" + } + // [START start_preload] private fun startPreloading(adUnitId: String) { val adRequest = AdRequest.Builder(adUnitId).build() @@ -30,10 +45,154 @@ private class RewardedInterstitialAdSnippets { // [END start_preload] + // [START set_buffer_size] + private fun setBufferSize(adUnitId: String) { + val adRequest = AdRequest.Builder(adUnitId).build() + val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 3) + RewardedInterstitialAdPreloader.start(adUnitId, preloadConfig) + } + + // [END set_buffer_size] + + // [START set_callback] + private fun startPreloadingWithCallback(adUnitId: String) { + val preloadCallback = + // [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback. + object : PreloadCallback { + override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) { + Log.i( + TAG, + ("Rewarded interstitial preload ad $preloadId failed to load with error: ${adError.message}"), + ) + } + + override fun onAdsExhausted(preloadId: String) { + Log.i(TAG, "Rewarded interstitial preload ad $preloadId is not available") + } + + override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) { + Log.i(TAG, "Rewarded interstitial preload ad $preloadId is available") + } + } + val adRequest = AdRequest.Builder(adUnitId).build() + val preloadConfig = PreloadConfiguration(adRequest) + RewardedInterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback) + } + + // [END set_callback] + private fun pollAd(adUnitId: String) { // [START poll_ad] // Polling returns the next available ad and loads another ad in the background. val ad = RewardedInterstitialAdPreloader.pollAd(adUnitId) // [END poll_ad] } + + // [START pollAndShowAd] + private fun pollAndShowAd(activity: Activity, adUnitId: String) { + val ad = RewardedInterstitialAdPreloader.pollAd(adUnitId) + + ad?.apply { + this.adEventCallback = + object : RewardedInterstitialAdEventCallback { + override fun onAdImpression() { + Log.d(TAG, "Rewarded interstitial ad recorded an impression.") + } + + override fun onAdPaid(value: AdValue) { + Log.d( + TAG, + "Rewarded interstitial ad onPaidEvent: ${value.valueMicros} ${value.currencyCode}", + ) + } + } + + // Show the ad. + ad.show(activity) { rewardItem -> + Log.d(TAG, "User earned reward: ${rewardItem.amount} ${rewardItem.type}") + } + } + } + + // [END pollAndShowAd] + + // [START isAdAvailable] + private fun isAdAvailable(adUnitId: String): Boolean { + return RewardedInterstitialAdPreloader.isAdAvailable(adUnitId) + } + + // [END isAdAvailable] + + // [START stop_preload] + private fun stopPreloading(adUnitId: String) { + RewardedInterstitialAdPreloader.destroy(adUnitId) + RewardedInterstitialAdPreloader.destroyAll() + } + + // [END stop_preload] + + // [START set_event_callback] + private fun setEventCallback(rewardedInterstitialAd: RewardedInterstitialAd?) { + // Listen for ad events. + rewardedInterstitialAd?.adEventCallback = + object : RewardedInterstitialAdEventCallback { + override fun onAdImpression() { + // Impression recorded. + } + + override fun onAdPaid(adValue: AdValue) { + // Paid event recorded. + } + + override fun onAdShowedFullScreenContent() { + // Ad showed. + } + + override fun onAdDismissedFullScreenContent() { + // Ad dismissed. + } + + override fun onAdFailedToShowFullScreenContent( + fullScreenContentError: FullScreenContentError + ) { + // Ad failed to show. + } + + override fun onAdClicked() { + // Ad clicked. + } + } + } + // [END set_event_callback] +} + +// [START single_load] +class RewardedInterstitialActivity : Activity() { + private var rewardedInterstitialAd: RewardedInterstitialAd? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + // Load ads after you initialize MobileAds. + RewardedInterstitialAd.load( + AdRequest.Builder(AD_UNIT_ID).build(), + object : AdLoadCallback { + override fun onAdLoaded(ad: RewardedInterstitialAd) { + // Ad loaded. + rewardedInterstitialAd = ad + } + + override fun onAdFailedToLoad(adError: LoadAdError) { + // Ad failed to load. + rewardedInterstitialAd = null + } + }, + ) + } + + companion object { + // Sample rewarded interstitial ad unit ID. + const val AD_UNIT_ID = "ca-app-pub-3940256099942544/5354046379" + } } +// [END single_load]