前提条件
务必用测试广告进行测试
在构建和测试应用时,请确保使用的是测试广告,而不是实际投放的广告。否则,可能会导致您的账号被中止。
对于 Android 激励广告,加载测试广告最简便的方法就是使用下面的专用测试广告单元 ID:
ca-app-pub-3940256099942544/5224354917
该测试广告单元 ID 已经过专门配置,可确保每个请求返回的都是测试广告。您可以在自己应用的编码、测试和调试过程中随意使用该测试广告单元 ID。需要注意的一点是,请务必在发布应用前用您的广告单元 ID 替换该测试广告单元 ID。
如需详细了解 Google 移动广告 SDK(Beta 版)的测试广告如何运作,请参阅测试广告。
加载广告
要加载激励广告,请调用 RewardedAd
静态 load()
方法并传入 AdLoadCallback<RewardedAd>
,以接收加载的广告或任何可能的错误。
Kotlin
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.FullScreenContentError
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAd
import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAdEventCallback
import com.google.android.libraries.ads.mobile.sdk.MobileAds
class RewardedActivity : Activity() {
private var rewardedAd: RewardedAd? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Load ads after you inititalize Google Mobile Ads SDK (beta).
RewardedAd.load(
AdRequest.Builder(AD_UNIT_ID).build(),
object : AdLoadCallback<RewardedAd> {
override fun onAdLoaded(ad: RewardedAd) {
// Rewarded ad loaded.
rewardedAd = ad
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// Rewarded ad failed to load.
rewardedAd = null
}
},
)
}
companion object {
// Sample rewarded ad unit ID.
const val AD_UNIT_ID = "ca-app-pub-3940256099942544/5224354917"
}
}
Java
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.FullScreenContentError;
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError;
import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAd;
import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAdEventCallback;
import com.google.android.libraries.ads.mobile.sdk.MobileAds;
class RewardedActivity extends Activity {
// Sample rewarded ad unit ID.
private static final String AD_UNIT_ID = "ca-app-pub-3940256099942544/5224354917";
private RewardedAd rewardedAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load ads after you initialize Google Mobile Ads SDK (beta).
RewardedAd.load(
new AdRequest.Builder(AD_UNIT_ID).build(),
new AdLoadCallback<RewardedAd>() {
@Override
public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
// Rewarded ad loaded.
AdLoadCallback.super.onAdLoaded(rewardedAd);
RewardedActivity.this.rewardedAd = rewardedAd;
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError adError) {
// Rewarded ad failed to load.
AdLoadCallback.super.onAdFailedToLoad(adError);
rewardedAd = null;
}
}
);
}
}
设置 RewardedAdEventCallback
RewardedAdEventCallback
负责处理与展示 RewardedAd
相关的事件。在展示激励广告之前,请务必按如下方式设置回调:
Kotlin
// Listen for ad events.
rewardedAd?.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.
rewardedAd = null
}
override fun onAdImpression() {
// Rewarded ad did record an impression.
}
override fun onAdClicked() {
// Rewarded ad did record a click.
}
}
Java
// Listen for ad events.
rewardedAd.setAdEventCallback(
new RewardedAdEventCallback() {
@Override
public void onAdShowedFullScreenContent() {
// Rewarded ad did show.
RewardedAdEventCallback.super.onAdShowedFullScreenContent();
}
@Override
public void onAdDismissedFullScreenContent() {
// Rewarded ad did dismiss.
RewardedAdEventCallback.super.onAdDismissedFullScreenContent();
rewardedAd = null;
}
@Override
public void onAdFailedToShowFullScreenContent(
@NonNull FullScreenContentError fullScreenContentError) {
// Rewarded ad failed to show.
RewardedAdEventCallback.super.onAdFailedToShowFullScreenContent(
fullScreenContentError);
rewardedAd = null;
}
@Override
public void onAdImpression() {
// Rewarded ad did record an impression.
RewardedAdEventCallback.super.onAdImpression();
}
@Override
public void onAdClicked() {
// Rewarded ad did record a click.
RewardedAdEventCallback.super.onAdClicked();
}
}
);
展示广告
如需展示激励广告,请使用 show()
方法。使用 OnUserEarnedRewardListener
对象处理奖励事件。
Kotlin
// Show the ad.
rewardedAd?.show(
this@RewardedActivity,
object : OnUserEarnedRewardListener {
override fun onUserEarnedReward(rewardItem: RewardItem) {
// User earned the reward.
val rewardAmount = rewardItem.amount
val rewardType = rewardItem.type
}
},
)
Java
// Show the ad.
rewardedAd.show(
RewardedActivity.this,
new OnUserEarnedRewardListener() {
@Override
public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
// User earned the reward.
int rewardAmount = rewardItem.getAmount();
String rewardType = rewardItem.getType();
}
});
常见问题解答
- 初始化调用是否会超时?
- 10 秒后,即使中介广告联盟仍未完成初始化,Google 移动广告 SDK(Beta 版)还是会调用
OnInitializationCompleteListener
。 - 在获得初始化回调时,如果某些中介广告联盟尚未就绪,该怎么办?
我们建议您在
OnInitializationCompleteListener
的回调中加载广告。即使中介广告联盟尚未就绪,Google 移动广告 SDK(Beta 版)仍会向该广告联盟请求广告。因此,如果中介广告联盟在超时后完成初始化,它仍然可以在该会话中为将来的广告请求提供服务。您可以通过调用
MobileAds.getInitializationStatus()
继续在整个应用会话中轮询所有适配器的初始化状态。- 如何找出特定中介广告联盟未准备就绪的原因?
AdapterStatus.getDescription()
描述了适配器未准备好为广告请求提供服务的原因。- 系统是否始终会在调用
onAdDismissedFullScreenContent()
回调之前调用onUserEarnedReward()
回调? 对于 Google Ads,所有
onUserEarnedReward()
调用都发生在onAdDismissedFullScreenContent()
调用之前。对于通过中介投放的广告,由第三方广告联盟 SDK 的实现情况决定回调顺序。对于为单次关闭回调提供奖励信息的广告联盟 SDK,中介适配器会在调用onAdDismissedFullScreenContent()
之前调用onUserEarnedReward()
。
示例
下载并运行示例应用,该应用演示了如何使用 Google 移动广告 SDK(Beta 版)。