开屏广告是一种广告格式,适合希望通过应用加载屏幕变现的发布商。用户可以随时关闭开屏广告。当用户将您的应用切换到前台时,展示开屏广告。
如需了解详情,请参阅开屏广告指南。本指南介绍了如何将开屏广告植入到 Android 应用中。
准备工作
在继续操作之前,请确保满足以下条件:
- 设置 GMA Next-Gen SDK。
- 使用测试开屏广告单元 ID
ca-app-pub-3940256099942544/9257395921。- 在构建和测试应用时,请确保使用的是测试广告,而不是实际投放的广告。如果您不使用测试广告单元 ID,Google 可能会中止您的账号。
- 在发布应用之前,请将此 ID 替换为您的广告单元 ID。
- 如需详细了解 GMA Next-Gen SDK 测试广告,请参阅启用测试广告。
加载广告
以下示例会加载单个广告:
Kotlin
// Load ads after you initialize MobileAds. AppOpenAd.load( AdRequest.Builder(adUnitId).build(), object : AdLoadCallback<AppOpenAd> { override fun onAdLoaded(ad: AppOpenAd) { // App open ad loaded. appOpenAd = ad } override fun onAdFailedToLoad(adError: LoadAdError) { // App open ad failed to load. Log.e(TAG, "App open ad failed to load: ${adError.message}") appOpenAd = null } }, )
Java
// Load ads after you initialize MobileAds. AppOpenAd.load( new AdRequest.Builder(adUnitId).build(), new AdLoadCallback<AppOpenAd>() { @Override public void onAdLoaded(AppOpenAd ad) { // App open ad loaded. appOpenAd = ad; } @Override public void onAdFailedToLoad(LoadAdError adError) { // App open ad failed to load. Log.e(TAG, "App open ad failed to load: " + adError.getMessage()); appOpenAd = null; } });
测试时,请使用测试广告单元 ID:ca-app-pub-3940256099942544/9257395921。
展示广告
若要展示开屏广告,请调用show 方法。开屏广告会在加载 4 小时后过期。不要展示加载时间超过 4 小时的开屏广告。
以下示例展示了广告:
Kotlin
private fun showAd(appOpenAd: AppOpenAd, activity: Activity) { // Show the ad. appOpenAd.show(activity) }
Java
private void showAd(AppOpenAd appOpenAd, Activity activity) { // Show the ad. appOpenAd.show(activity); }
处理冷启动和加载屏幕
冷启动是指应用从磁盘启动,温启动是指从内存中重新打开应用。在冷启动期间,您没有预先加载好的广告可供展示。在热启动期间,您可能仍有已加载的广告可供展示。
在冷启动期间,用户可能会在应用加载并展示广告之前与应用互动。为避免造成不佳的用户体验,请在冷启动时严格按照以下方式展示开屏广告:在应用资源加载期间,通过加载屏幕展示广告。在用户等待您的应用加载时,展示开屏广告。不要在应用首次启动时展示开屏广告。如果素材资源加载完成,并且用户在广告加载之前就已到达主要内容,则不要展示广告。
在后台线程中加载应用素材资源,以便在广告展示期间继续加载。如果加载屏幕在广告展示期间加载完毕,请在广告关闭回调方法中关闭加载屏幕。
监听广告事件
在展示广告之前,请先监听广告生命周期事件。以下示例为广告事件注册了回调:
Kotlin
private fun listenToAdEvents() { // Listen for ad events. val ad = appOpenAd if (ad == null) { Log.e(TAG, "App open ad is not ready yet.") return } ad.adEventCallback = object : AppOpenAdEventCallback { override fun onAdShowedFullScreenContent() { // App open ad did show. } override fun onAdDismissedFullScreenContent() { // App open ad did dismiss. appOpenAd = null } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError ) { // App open ad failed to show. Log.e(TAG, "App open ad failed to show: ${fullScreenContentError.message}") } override fun onAdImpression() { // App open ad did record an impression. } override fun onAdClicked() { // App open ad did record a click. } } }
Java
private void listenToAdEvents() { // Listen for ad events. if (appOpenAd == null) { Log.e(TAG, "App open ad is not ready yet."); return; } appOpenAd.setAdEventCallback( new AppOpenAdEventCallback() { @Override public void onAdShowedFullScreenContent() { // App open ad did show. } @Override public void onAdDismissedFullScreenContent() { // App open ad did dismiss. appOpenAd = null; } @Override public void onAdFailedToShowFullScreenContent( @NonNull FullScreenContentError fullScreenContentError) { // App open ad failed to show. Log.e(TAG, "App open ad failed to show: " + fullScreenContentError.getMessage()); } @Override public void onAdImpression() { // App open ad did record an impression. } @Override public void onAdClicked() { // App open ad did record a click. } }); }