本指南介绍了如何将激励广告植入到 Android 应用中。
准备工作
在继续之前,请执行以下操作:
- 设置 GMA Next-Gen SDK。
- 使用测试激励广告单元 ID
ca-app-pub-3940256099942544/5224354917。- 在构建和测试应用时,请确保使用的是测试广告,而不是实际投放的广告。如果您不使用测试广告单元 ID,Google 可能会暂停您的账号。
- 在发布应用之前,请将此 ID 替换为您的广告单元 ID。
- 如需详细了解 GMA Next-Gen SDK 测试广告,请参阅 启用测试广告。
加载广告
以下示例加载了单个广告:
Kotlin
// Load ads after you initialize MobileAds. RewardedAd.load( AdRequest.Builder(adUnitId).build(), object : AdLoadCallback<RewardedAd> { override fun onAdLoaded(ad: RewardedAd) { // Rewarded ad loaded. rewardedAd = ad } override fun onAdFailedToLoad(adError: LoadAdError) { // Rewarded ad failed to load. Log.e(TAG, "Rewarded ad failed to load: ${adError.message}") rewardedAd = null } }, )
Java
// Load ads after you initialize MobileAds. RewardedAd.load( new AdRequest.Builder(adUnitId).build(), new AdLoadCallback<RewardedAd>() { @Override public void onAdLoaded(@NonNull RewardedAd ad) { // Rewarded ad loaded. rewardedAd = ad; } @Override public void onAdFailedToLoad(@NonNull LoadAdError adError) { // Rewarded ad failed to load. Log.e(TAG, "Rewarded ad failed to load: " + adError.getMessage()); rewardedAd = null; } });
测试时,请使用测试广告单元 ID:ca-app-pub-3940256099942544/5224354917。
展示广告
如需展示激励广告,请调用show 方法。如需处理奖励事件,请使用 OnUserEarnedRewardListener 对象。
以下示例展示了广告:
Kotlin
private fun showAd(rewardedAd: RewardedAd, activity: Activity) { // Show the ad. rewardedAd.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(RewardedAd rewardedAd, Activity activity) { // Show the ad. rewardedAd.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 = 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 查询参数采用
百分号编码。在解析值之前,请先在服务器上对字符串进行网址解码,并验证回调签名,然后再信任 user_id 或 custom_data 查询参数。