本指南介绍了如何将锚定自适应横幅广告加载到 Android 应用中。
前提条件
- 完成入门指南。
务必用测试广告进行测试
在构建和测试应用时,请确保使用的是测试广告,而不是实际投放的广告。否则,可能会导致您的账号被中止。
对于 Android 横幅广告,加载测试广告最简便的方法就是使用下面的测试专用广告单元 ID:
ca-app-pub-3940256099942544/9214589741
该测试广告单元 ID 已经过专门配置,可确保每个请求返回的都是测试广告。您可以在自己应用的编码、测试和调试过程中使用该测试广告单元 ID。只需确保您会在发布应用前用自己的广告单元 ID 替换该测试广告单元 ID 即可。
如需详细了解 Google 移动广告 SDK 的测试广告如何运作,请参阅启用测试广告。
定义广告视图容器
将一个视图添加到布局 XML 文件中,以用作锚定自适应横幅广告的容器:
<!-- Ad view container that fills the width of the screen and adjusts its
height to the content of the ad. -->
<FrameLayout
android:id="@+id/ad_view_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignParentBottom="true" />
设置广告尺寸
将 AdSize
设置为具有指定宽度的锚定型自适应横幅广告类型:
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))
向布局中添加 AdView
使用广告尺寸创建 AdView
,以添加到应用的布局中:
// Create a new ad view.
adView = new AdView(this);
adView.setAdUnitId(AD_UNIT_ID);
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));
// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);
// Create a new ad view.
val adView = AdView(this)
adView.adUnitId = AD_UNIT_ID
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))
this.adView = adView
// Replace ad container with new ad view.
binding.adViewContainer.removeAllViews()
binding.adViewContainer.addView(adView)
加载广告
AdView
放置好后,下一步是加载广告。广告加载是使用 AdView
类中的 loadAd()
方法完成的。此方法需要一个 AdRequest
参数,该参数中包含关于单个广告请求的运行时信息(如定位信息)。
以下示例展示了如何加载广告:
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)
如果成功,您的应用就可以展示横幅广告了。
刷新广告
如果您已将广告单元配置为定期刷新,则在广告加载失败时无需请求其他广告。Google 移动广告 SDK 会遵循您在 AdMob 界面中指定的任何刷新频率。如果您尚未启用刷新,请发出新的请求。如需详细了解广告单元刷新(例如设置刷新频率),请参阅为横幅广告使用自动刷新功能。
广告事件
您可以监听广告生命周期中的多种事件,包括加载、广告展示和点击,以及广告打开和关闭事件。建议在加载横幅之前设置回调。adView.setAdListener(new AdListener() {
@Override
public void onAdClicked() {
// Code to be executed when the user clicks on an ad.
}
@Override
public void onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
}
@Override
public void onAdFailedToLoad(LoadAdError adError) {
// Code to be executed when an ad request fails.
}
@Override
public void onAdImpression() {
// Code to be executed when an impression is recorded
// for an ad.
}
@Override
public void onAdLoaded() {
// Code to be executed when an ad finishes loading.
}
@Override
public void onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
}
});
adView.adListener = object: AdListener() {
override fun onAdClicked() {
// Code to be executed when the user clicks on an ad.
}
override fun onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
}
override fun onAdFailedToLoad(adError : LoadAdError) {
// Code to be executed when an ad request fails.
}
override fun onAdImpression() {
// Code to be executed when an impression is recorded
// for an ad.
}
override fun onAdLoaded() {
// Code to be executed when an ad finishes loading.
}
override fun onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
}
}
AdListener
中每种可替换的方法均对应广告生命周期内的一个事件。
可替换的方法 | |
---|---|
onAdClicked() |
记录了广告获得的点击后,系统会调用 onAdClicked() 方法。
|
onAdClosed() |
用户在查看广告的目标网址后返回应用时,系统会调用 onAdClosed() 方法。应用可以使用此方法恢复暂停的 activity,或执行任何其他必要的操作,以做好互动准备。
如需了解 Android API Demo 应用中的广告监听器方法是如何实现的,请参阅 AdMob AdListener 示例。
|
onAdFailedToLoad() |
onAdFailedToLoad() 是唯一包含参数的方法。LoadAdError 类型的错误参数描述了发生的错误。如需了解详情,请参阅“调试广告加载错误”文档。
|
onAdImpression() |
记录了广告获得的展示后,系统会调用 onAdImpression() 方法。 |
onAdLoaded() |
广告加载完成后,系统会执行 onAdLoaded() 方法。如果您想推迟给 activity 或 fragment 添加 AdView 的操作,例如推迟到您确定广告会加载时,可以在此处进行。
|
onAdOpened() |
广告打开覆盖屏幕的叠加层时,系统会调用 onAdOpened() 方法。 |
针对视频广告启用硬件加速
为了确保视频广告在横幅广告视图中成功展示,必须启用硬件加速。
硬件加速默认处于启用状态,但有些应用可能会选择将其停用。如果您的应用停用了硬件加速,我们建议您为使用广告的 Activity
类启用硬件加速。
启用硬件加速
如果您的应用在全局级别启用硬件加速时无法正常运行,您也可以针对个别 activity 启用或停用硬件加速。如需启用或停用硬件加速,您可以针对 AndroidManifest.xml
中的 <application>
和 <activity>
元素使用 android:hardwareAccelerated
属性。以下示例展示了如何为整个应用启用硬件加速,但为一个 activity 停用硬件加速:
<application android:hardwareAccelerated="true">
<!-- For activities that use ads, hardwareAcceleration should be true. -->
<activity android:hardwareAccelerated="true" />
<!-- For activities that don't use ads, hardwareAcceleration can be false. -->
<activity android:hardwareAccelerated="false" />
</application>
如需详细了解用于控制硬件加速的选项,请参阅硬件加速指南。请注意,如果针对 activity 停用了硬件加速,那么将无法针对单个广告视图启用,因此必须针对 activity 本身启用硬件加速。
其他资源
GitHub 上的示例
后续步骤
折叠式横幅广告
折叠式横幅广告是一种横幅广告,最初会以较大的叠加层形式展示,并提供一个可将广告收起为较小尺寸的按钮。不妨考虑使用该工具进一步优化效果。如需了解详情,请参阅折叠式横幅广告。
内嵌自适应横幅广告
与锚定自适应横幅广告相比,内嵌自适应横幅广告是一种更大、更高的横幅广告。这种广告的高度可调整,最高可与设备屏幕一样高。对于在可滚动内容中放置横幅广告的应用,建议使用内嵌自适应横幅广告,而不是锚定自适应横幅广告。如需了解详情,请参阅内嵌自适应横幅广告。