插页式激励广告是一种广告格式,可让您在应用中的自然过渡点自动展示广告,并向观看广告的用户提供奖励。与激励广告不同,插页式激励广告会自动展示,无需用户选择观看。 如需了解详情,请参阅插页式激励广告指南。
本指南介绍了如何将插页式激励广告植入到 Android 应用中。
准备工作
在继续操作之前,请先完成以下事项:
- 设置 GMA Next-Gen SDK。
- 使用测试插页式激励广告单元 ID
ca-app-pub-3940256099942544/5354046379。- 在构建和测试应用时,请确保使用的是测试广告,而不是实际投放的广告。如果您不使用测试广告单元 ID,Google 可能会中止您的账号。
- 在发布应用之前,请将此 ID 替换为您的广告单元 ID。
- 如需详细了解 GMA Next-Gen SDK 测试广告,请参阅启用测试广告。
加载广告
以下示例会加载单个广告:
Kotlin
// Load ads after you initialize MobileAds. RewardedInterstitialAd.load( AdRequest.Builder(adUnitId).build(), object : AdLoadCallback<RewardedInterstitialAd> { override fun onAdLoaded(ad: RewardedInterstitialAd) { // Rewarded interstitial ad loaded. rewardedInterstitialAd = ad } override fun onAdFailedToLoad(adError: LoadAdError) { // Rewarded interstitial ad failed to load. Log.e(TAG, "Rewarded interstitial ad failed to load: ${adError.message}") rewardedInterstitialAd = null } }, )
Java
// Load ads after you initialize MobileAds. RewardedInterstitialAd.load( new AdRequest.Builder(adUnitId).build(), new AdLoadCallback<RewardedInterstitialAd>() { @Override public void onAdLoaded(@NonNull RewardedInterstitialAd ad) { // Rewarded interstitial ad loaded. rewardedInterstitialAd = ad; } @Override public void onAdFailedToLoad(@NonNull LoadAdError adError) { // Rewarded interstitial ad failed to load. Log.e(TAG, "Rewarded interstitial ad failed to load: " + adError.getMessage()); rewardedInterstitialAd = null; } });
测试时,请使用测试广告单元 ID:ca-app-pub-3940256099942544/5354046379。
展示广告
如需展示插页式激励广告,请调用show 方法。如需处理奖励事件,请使用 OnUserEarnedRewardListener 对象。
以下示例展示了广告:
Kotlin
private fun showAd(rewardedInterstitialAd: RewardedInterstitialAd, activity: Activity) { // Show the ad. rewardedInterstitialAd.show( activity, object : OnUserEarnedRewardListener { override fun onUserEarnedReward(rewardItem: RewardItem) { // User earned the reward. val rewardAmount = rewardItem.amount val rewardType = rewardItem.type } }, ) }
Java
private void showAd(RewardedInterstitialAd rewardedInterstitialAd, Activity activity) { // Show the ad. rewardedInterstitialAd.show( activity, new OnUserEarnedRewardListener() { @Override public void onUserEarnedReward(@NonNull RewardItem rewardItem) { // User earned the reward. int rewardAmount = rewardItem.getAmount(); String rewardType = rewardItem.getType(); } }); }
监听广告事件
在展示广告之前,请先监听广告生命周期事件。以下示例为广告事件注册了回调:
Kotlin
private fun listenToAdEvents() { // Listen for ad events. val ad = rewardedInterstitialAd if (ad == null) { Log.e(TAG, "Rewarded interstitial ad is not ready yet.") return } ad.adEventCallback = object : RewardedInterstitialAdEventCallback { override fun onAdShowedFullScreenContent() { // Rewarded interstitial ad did show. } override fun onAdDismissedFullScreenContent() { // Rewarded interstitial ad did dismiss. rewardedInterstitialAd = null } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError ) { // Rewarded interstitial ad failed to show. Log.e(TAG, "Rewarded interstitial ad failed to show: ${fullScreenContentError.message}") } override fun onAdImpression() { // Rewarded interstitial ad did record an impression. } override fun onAdClicked() { // Rewarded interstitial ad did record a click. } } }
Java
private void listenToAdEvents() { // Listen for ad events. if (rewardedInterstitialAd == null) { Log.e(TAG, "Rewarded interstitial ad is not ready yet."); return; } rewardedInterstitialAd.setAdEventCallback( new RewardedInterstitialAdEventCallback() { @Override public void onAdShowedFullScreenContent() { // Rewarded interstitial ad did show. } @Override public void onAdDismissedFullScreenContent() { // Rewarded interstitial ad did dismiss. rewardedInterstitialAd = null; } @Override public void onAdFailedToShowFullScreenContent( @NonNull FullScreenContentError fullScreenContentError) { // Rewarded interstitial ad failed to show. Log.e( TAG, "Rewarded interstitial ad failed to show: " + fullScreenContentError.getMessage()); } @Override public void onAdImpression() { // Rewarded interstitial ad did record an impression. } @Override public void onAdClicked() { // Rewarded interstitial ad did record a click. } }); }
可选:验证服务器端验证 (SSV) 回调
如需在服务器端验证 (SSV) 回调中传递用户和应用上下文,请在展示广告之前在广告对象上设置验证选项。由于 SSV 回调是从 Google 到达您的服务器,不包含会话状态,因此请附加以下可选字符串。Google 会在 SSV 回调中将这些字符串作为已签名的查询参数原样转发:
user_id查询参数:标识要奖励的用户,例如内部账号 ID。custom_data查询参数:携带应用数据,例如奖励展示位置、游戏关卡或服务器生成的 Nonce。
如果您未设置值,Google 会从 SSV 回调中省略该查询参数。
以下示例在展示广告之前在广告对象中设置自定义数据:
Kotlin
Java
请将 SAMPLE_CUSTOM_DATA_STRING 替换为自定义数据。
要点:custom_data 查询参数经过百分号编码。在解析该值之前,请先在服务器上对字符串进行网址解码,并验证回调签名,然后再信任 user_id 或 custom_data 查询参数。