原生广告是通过界面组件向用户呈现的广告素材资源 都是平台原生的它们使用相同类型的视图 您已经在构建布局,而且可以设置格式 应用的视觉设计
加载原生广告时,您的应用会收到一个包含其素材资源的广告对象, 然后应用(而不是 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 本身必须具有硬件加速 。
展示您的广告
加载广告后,剩下的工作就是将其展示给您的用户。 请访问原生高级广告 指南了解具体方法。