原生广告

原生广告是通过界面组件向用户呈现的广告素材资源 都是平台原生的它们使用相同类型的视图 您已经在构建布局,而且可以设置格式 应用的视觉设计

加载原生广告时,您的应用会收到一个包含其素材资源的广告对象, 然后应用(而不是 Google 移动广告 SDK) 来显示它们

一般来说,要成功植入原生广告,需要完成两部分工作: 使用 SDK 加载广告,然后在您的应用中展示广告内容。

本页介绍了如何使用 SDK 加载 原生广告

前提条件

始终使用测试广告进行测试

在构建和测试应用时,请务必使用测试广告 实际投放的广告。

对于 Android 原生广告,加载测试广告最简便的方法就是使用下面的测试专用广告单元 ID:

/21775744923/example/native

该测试广告单元 ID 已经过专门配置,可为每个请求返回测试广告,而且您可以 在自己应用的编码、测试和调试过程中使用。只需确保您 请将其替换为您自己的广告单元 ID,然后再发布应用。

如需详细了解 Google 移动广告 SDK 的测试广告如何运作,请参阅 测试广告

加载广告

原生广告使用 AdLoader 类, 它有自己的 Builder 类,以便在创建过程中对其进行自定义。通过将监听器添加到 AdLoader 在构建时,应用会指定它准备投放哪些类型的原生广告 接收。然后,AdLoader 会仅请求这些类型。

构建 AdLoader

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

Java

AdLoader adLoader = new AdLoader.Builder(context, "/21775744923/example/native")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            // 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, "/21775744923/example/native}")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // Handle the failure.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

通过 forNativeAd() 方法负责为 NativeAd 格式准备 AdLoader。 当广告成功加载后,监听器对象的 onNativeAdLoaded() 方法。

使用 AdLoader 设置 AdListener(可选)

创建 AdLoader 时, withAdListener 函数会设置一个 AdListener,适用于 加载器。该方法将 AdListener 作为其唯一参数,由后者接收 从 AdLoader 调用回调函数:

Java

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

提出广告请求

构建完 AdLoader 后,就可以使用它来请求广告了。 使用 loadAd() 方法,该方法接受一个 AdManagerAdRequest 作为其第一个参数。这与 AdManagerAdRequest 类(由横幅广告和插页式广告使用), 您还可以使用 AdManagerAdRequest 类的方法 添加定位信息,就像 与其他广告格式相比

loadAd()

此方法针对单个广告发送请求。

Java

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

Kotlin

adLoader.loadAd(AdManagerAdRequest.Builder().build())

回调

调用 loadAd() 后,将对先前定义的 监听器方法来投放原生广告对象或报告错误。

释放资源

请务必对已加载的原生广告使用 destroy() 方法。此版本 充分利用资源并防止内存泄漏

确保在 activity 的以下代码中销毁所有 NativeAd 引用 onDestroy() 方法。

onNativeAdLoaded 回调中,确保销毁任何现有 将会取消引用的原生广告

另一项密钥检查是 activity 是否已销毁,如果是,则对destroy() 返回的广告并立即返回:

Java

final AdLoader adLoader = new AdLoader.Builder(this, "/21775744923/example/native")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed()` is a method on Activity.
        if (isDestroyed()) {
            nativeAd.destroy();
            return;
        }
        ...
    }
}).build();

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "/21775744923/example/native")
    .forNativeAd { nativeAd ->
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed` is a method on Activity.
        if (isDestroyed) {
            nativeAd.destroy()
            return@forNativeAd
        }
        ...
    }.build()

最佳做法

加载广告时,请遵循以下规则。

  • 在列表中使用原生广告的应用应预缓存广告列表。

  • 预缓存广告时,请清除缓存,并在一小时后重新加载。

  • 在第一个请求加载完成之前,请勿对 AdLoader 调用 loadAd()

适用于视频广告的硬件加速功能

为确保视频广告在您的原生广告视图中成功展示, 硬件 加速

硬件加速默认处于启用状态,但有些应用可能会选择 禁用它。如果您的应用属于这种情况,我们建议您启用硬件 为使用广告的 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>

请参阅 HW 加速 请参阅 详细了解用于控制硬件加速的选项。注意事项 使用 activity 已停用,因此该 activity 本身必须具有硬件加速 。

展示您的广告

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