横幅广告会占据应用布局中的一处位置,要么是设备屏幕的顶部,要么是底部。用户与应用互动时,这类广告会停留在屏幕上,并且可在一段时间后自动刷新。如果您刚开始接触移动广告,建议从横幅广告着手。 案例研究。
本指南介绍了如何将AdMob 横幅广告植入到 Android 应用中。除了提供代码段和操作说明之外,本指南还介绍了如何正确地设置横幅广告的尺寸,并给出了其他资源的链接。
前提条件
- 通读入门指南。
向布局中添加 AdView
要展示横幅广告,首先要将 AdView
放置到您希望用于展示广告的 Activity
或 Fragment
的布局中。最简单的方法是向相应的 XML 布局文件添加一个。以下是展示 Activity 的 AdView
的示例:
# main_activity.xml ... <com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto" android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="BANNER" ads:adUnitId="ca-app-pub-3940256099942544/6300978111"> </com.google.android.gms.ads.AdView> ...
请注意以下必需的属性:
ads:adSize
- 将此属性设置为要使用的广告尺寸。如果您不想使用常量定义的标准尺寸,可以改为设置自定义尺寸。有关详情,请参阅下面的“横幅广告尺寸”部分。ads:adUnitId
- 将此属性设置为您应用中的广告单元要展示广告的唯一标识符。如果您要在不同的 activity 中展示横幅广告,则其中每个都需要一个广告单元。
您也可以以编程方式创建 AdView
:
Java
AdView adView = new AdView(this); adView.setAdSize(AdSize.BANNER); adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111"); // TODO: Add adView to your view hierarchy.
Kotlin
val adView = AdView(this) adView.adSize = AdSize.BANNER adView.adUnitId = "ca-app-pub-3940256099942544/6300978111" // TODO: Add adView to your view hierarchy.
务必用测试广告进行测试
在构建和测试应用时,请确保使用的是测试广告,而不是实际投放的广告。否则,可能会导致您的帐号被暂停。
对于 Android 横幅广告,加载测试广告最简便的方法就是使用下面的测试专用广告单元 ID:
ca-app-pub-3940256099942544/6300978111
该测试广告单元 ID 已经过专门配置,可为每个请求返回测试广告,您可以在自己应用的编码、测试和调试过程中随意使用该测试广告单元 ID。需要注意的一点是,请务必在发布应用前用您的广告单元 ID 替换该测试广告单元 ID。
如需详细了解移动广告 SDK 的测试广告如何运作,请参阅测试广告。
加载广告
AdView 设置完毕后,下一步是加载广告。这是通过 AdView
类中的 loadAd()
方法完成的。这需要 AdRequest
参数,该参数包含有关单个广告请求的运行时信息(如定位信息)。
以下示例展示了如何在 Activity
的 onCreate()
方法中加载广告:
MainActivity(节选)
Java
package ... import ... import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdView; public class MainActivity extends AppCompatActivity { private AdView mAdView; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MobileAds.initialize(this, new OnInitializationCompleteListener() { @Override public void onInitializationComplete(InitializationStatus initializationStatus) { } }); mAdView = findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); } }
Kotlin
package ... import ... import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.AdView class MainActivity : AppCompatActivity() { lateinit var mAdView : AdView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) MobileAds.initialize(this) {} mAdView = findViewById(R.id.adView) val adRequest = AdRequest.Builder().build() mAdView.loadAd(adRequest) } }
大功告成!您的应用现在就可以展示横幅广告了。
广告事件
若要进一步自定义广告的行为,您可以在广告生命周期内加入许多事件,如加载、打开、关闭等等。您可以通过 AdListener
类监听这些事件。
如需将 AdListener
与 AdView
结合使用,请调用 setAdListener()
方法:
Java
mAdView.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. } });
Kotlin
mAdView.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() 方法。应用可以使用此方法恢复暂停的活动,或执行任何其他必要的操作,以做好互动准备。
如需了解 Android API Demo 应用中的广告监听器方法实现,请参阅 AdMob AdListener 示例。
|
onAdFailedToLoad()
|
onAdFailedToLoad() 是唯一包含参数的方法。LoadAdError 类型的错误参数描述了发生了什么错误。如需了解详情,请参阅调试广告加载错误文档。
|
onAdImpression()
|
记录了广告获得的展示后,系统会调用 onAdImpression() 方法。 |
onAdLoaded()
|
广告加载完成后,系统会执行 onAdLoaded() 方法。例如,如果您想将为 Activity 或 Fragment 添加 AdView 的操作推迟到您确定广告会加载时再执行,就可以通过此方法做到。
|
onAdOpened()
|
广告打开覆盖屏幕的叠加层时,系统会调用 onAdOpened() 方法。 |
横幅尺寸
下表列出了标准的横幅广告尺寸。
尺寸(宽 x 高,以 dp 为单位) | 说明 | 可用性 | AdSize 常量 |
---|---|---|---|
320x50 | 横幅 | 手机和平板电脑 | BANNER |
320x100 | 大型横幅广告 | 手机和平板电脑 | LARGE_BANNER |
300x250 | IAB 中矩形 | 手机和平板电脑 | MEDIUM_RECTANGLE |
468x60 | IAB 全尺寸横幅广告 | 平板电脑 | FULL_BANNER |
728x90 | IAB 页首横幅广告 | 平板电脑 | LEADERBOARD |
提供的宽度 x 自适应高度 | 自适应横幅广告 | 手机和平板电脑 | 不适用 |
屏幕宽度 x 32|50|90 | 智能横幅 | 手机和平板电脑 | SMART_BANNER |
详细了解自适应横幅广告(旨在取代智能横幅广告)。 |
若要定义自定义横幅广告尺寸,请设置所需的 AdSize
,如下所示:
Java
AdSize adSize = new AdSize(300, 50);
Kotlin
val adSize = AdSize(300, 50)
视频广告的硬件加速
为了确保视频广告在横幅广告视图中成功展示,必须启用硬件加速。
硬件加速默认处于启用状态,但有些应用可能会选择将其停用。如果您的应用有此类行为,我们建议为使用广告的 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 の例
Mobile Ads Garage の動画チュートリアル
成功事例
次のステップ
詳しくは、ユーザーのプライバシーについての記事をご覧ください。