تبلیغات بنری

-l10nl10n

横幅广告会占据应用布局中的一处位置,要么是设备屏幕的顶部,要么是底部。用户与应用互动时,这类广告会停留在屏幕上,并且可在一段时间后自动刷新。如果您刚开始接触移动广告,建议从横幅广告着手。 案例研究

本指南介绍了如何将AdMob 横幅广告植入到 Android 应用中。除了代码段和说明之外,本指南还介绍了如何正确调整横幅广告的尺寸,并提供了其他资源的链接。

前提条件

向布局中添加 AdView

如需展示横幅广告,首先要将 AdView 放置到您希望用于展示广告的 ActivityFragment 的布局中。最简单的方法是将相应的 XML 文件添加到相应的 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 参数,其中包含关于单个广告请求的运行时信息(如定位信息)。

以下示例展示了如何在 ActivityonCreate() 方法中加载广告:

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 类监听这些事件。

如需将 AdListenerAdView 搭配使用,请调用 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

آموزش تصویری Garage Ads Mobile

داستان های موفقیت