Share your feedback about the Google Mobile Ads SDK! Take the annual survey.

Native Ads

原生广告是通过平台原本就有的界面组件向用户呈现的广告素材资源。这种广告使用您在构建布局时已经采用的同类视图进行展示,而且能以和周围视觉设计相称的形式呈现,让用户有浑然一体的使用体验。从代码编写的角度来说,这意味着当原生广告加载时,您的应用会收到一个包含其素材资源的 NativeAd 对象,然后就由此应用(而不是 SDK)负责展示它们了。

一般而言,要成功植入原生广告,就需要完成两步:通过 SDK 加载广告,然后在您的应用中展示广告内容。此页面主要介绍如何使用 SDK 加载原生广告

前提条件

加载广告

原生广告通过 AdLoader 类加载,该类有自己的 Builder 类,用于在创建过程中进行自定义。应用在构建 AdLoader 的过程中会向其添加监听器,以此方式指定它准备接收哪些类型的原生广告。这样,AdLoader 就会只请求这些类型的广告。

构建 AdLoader

以下代码演示了如何构建可加载统一原生广告的 AdLoader

Java

AdLoader adLoader = new AdLoader.Builder(context, "/6499/example/native")
    .forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
        @Override
        public void onUnifiedNativeAdLoaded(UnifiedNativeAd unifiedNativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(int errorCode) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(new NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build();

Kotlin

val adLoader = AdLoader.Builder(this, "/6499/example/native")
        .forUnifiedNativeAd { ad : UnifiedNativeAd ->
            // Show the ad.
        }
        .withAdListener(object : AdListener() {
            override fun onAdFailedToLoad(errorCode: Int) {
                // Handle the failure by logging, altering the UI, and so on.
            }
        })
        .withNativeAdOptions(NativeAdOptions.Builder()
                // Methods in the NativeAdOptions.Builder class can be
                // used here to specify individual options settings.
                .build())
        .build()

为 UnifiedNativeAd 格式做准备

上例中首先调用的方法负责为 UnifiedNativeAd 格式准备 AdLoader

forUnifiedNativeAd()
调用此方法会将 AdLoader 配置为请求统一原生广告。当广告成功加载后,会调用监听器对象的 onUnifiedNativeAdLoaded() 方法。

AdLoader 发出广告请求后,Google 会选择能使发布商收益最大化的广告,然后将该广告返回。

将 AdListener 与 AdLoader 配合使用

在创建上述 AdLoader 的过程中,withAdListener 函数会设置一个 AdListener

这是一个可选步骤。该方法将 AdListener 作为其唯一参数,当广告生命周期事件发生时,此参数会收到来自 AdLoader 的回调:

Java

.withAdListener(new AdListener() {
    // AdListener callbacks like OnAdFailedToLoad, OnAdOpened, OnAdClicked and
    // so on, can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks like OnAdFailedToLoad, OnAdOpened, OnAdClicked and
    // so on, can be overridden here.
})

AdListener 对象处理原生广告的方式与处理横幅广告和插页式广告的方式之间有一个重要的区别。由于 AdLoader 自己就有因具体格式而异的监听器(即 UnifiedNativeAd.OnUnifiedNativeAdLoadedListener)可在广告加载时使用,因此当原生广告成功加载时,并不会调用 AdListener 中的 onAdLoaded() 方法。

加载原生广告

构建完 AdLoader 后,即可调用其 loadAd() 方法来请求广告:

Java

adLoader.loadAd(new PublisherAdRequest.Builder().build());

Kotlin

adLoader.loadAd(PublisherAdRequest.Builder().build())

请注意,AdLoaders 使用与横幅广告和插页式广告相同的PublisherAdRequest类。您可以使用该类的方法来添加定位信息,其处理方式与其他广告类型一样。

何时请求广告

展示原生广告的应用可以在实际展示之前请求这些广告。在许多情况下,这是推荐的做法。例如,如果某款应用展示一个商品清单,其中会夹杂一些原生广告,那么该应用就可以加载整个清单中的原生广告,因为它知道一些广告仅在用户滚动浏览视图后才会展示,还有一些可能根本不会展示。

展示 UnifiedNativeAd

加载广告后,剩下的工作就是将其展示给您的用户。请参阅我们的原生高级广告指南,了解具体方法。

发送以下问题的反馈:

此网页
Mobile Ads SDK for Android
Mobile Ads SDK for Android
需要帮助?请访问我们的支持页面