Native/Icon
外观和风格与应用自然融为一体的定制广告。
简介
广告类型
类型 | 说明 |
---|---|
Native | 内容区域包含广告标示、徽标、主图、标题、描述、按钮等自定义样式。默认请求广告数量为1条(建议采用默认),当onAdLoaded回调成功后将数组内的第1条广告进行展示。 |
Icon | 通常情况下内容区域只包含Icon图。默认请求广告数量为1条,最大请求数量需咨询广告运营人员在当前广告位配置的参数,当onAdLoaded回调成功后将数组内的广告进行展示。适用广告源:Hisavana |
可参考广告源Hisavana如图1、图2所示:

图1:Native

图2:Icon
加载广告
请设置相应参数和监听回调。
// 初始化Ntaive/Icon广告对象,其中"native_id"/ "icon_id"是Native/Icon广告位ID
TNativeAd tNativeAd = new TNativeAd(this, "native_id"/ "icon_id");
// 构建广告请求体
TAdRequestBody tAdRequest = new TAdRequestBody.AdRequestBodyBuild()
.setAdListener(new TAdAlliance())
.build();
// 设置广告请求体
tNativeAd.setRequestBody(tAdRequest);
// 加载广告后在设置的等待时间内将最优广告回调返回
tNativeAd.loadAd();
// 广告监听器,监听广告加载完成(填充)、展示、点击、异常、关闭动作的回调
private static class TAdAlliance extends TAdListener {
// 加载完成回调(适用的广告位:所有广告位)
@Override
public void onLoad() {
// Ad loaded callback
}
// 异常回调(适用的广告位:所有广告位)
@Override
public void onError(TAdErrorCode errorCode) {
// Ad failed callback
}
// 展示回调(适用的广告位:Native/Icon)
@Override
public void onNativeFeedShow(int source, TAdNativeInfo adNativeInfo){
// Ad show callback
}
// 点击回调(适用的广告位:Native/Icon)
@Override
public void onNativeFeedClicked(int source, TAdNativeInfo adNativeInfo) {
// Ad click callback
}
// 关闭回调(适用的广告位:广告源Hisavana的Native/Icon)
@Override
public void onClosed(@Nullable TAdNativeInfo tAdNativeInfo) {
// Ad close callback
}
// 展示失败回调(适用的广告位:所有广告位)
@Override
public void onShowError(TAdErrorCode errorCode) {
// Ad show failed callback
}
}
提醒:source表示广告源,请参考广告源关联表; 比如:此次广告填充展示的是pangle广告,那么source=6。
展示广告
重点标记:
适用于广告源Hisavana
Native:对于跳到PalmStore落地页的广告,必须添加storeMarkView(应用商店标识),否则会影响下载广告的跳转链路。
Icon: 通常情况下无需要设置主图,只需要设置icon即可。
提醒:如果你想展示符合俄罗斯合规的 Native 广告,参见 展示俄罗斯合规广告。
步骤一:创建TAdNativeView对象。
// 请在父布局的xml中新增TAdNativeView
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.hisavana.mediation.ad.TAdNativeView
android:id="@+id/native_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
// 绑定xml布局中的view
TAdNativeView nativeView = findViewById(R.id.native_view);
或者
// 手动创建TAdNativeView对象,并添加到父布局
TAdNativeView nativeView = new TAdNativeView(this);
步骤二:新增子布局文件
Native:适用于支持Native/Icon的广告源,具体请参考聚合帮助,新增Native广告元素的子布局文件native_install.xml,其中广告元素中的icon用TIconView渲染,大图用TMediaView渲染。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ad_unit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="MissingDefaultResource">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:paddingTop="10dp"
android:paddingBottom="10dp">
<!-- 适用于支持Native/Icon的广告源,具体请参考"聚合帮助" -->
<com.hisavana.mediation.ad.TIconView
android:id="@+id/native_ad_icon"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="5dp"
android:paddingRight="16dp">
<TextView
android:id="@+id/native_ad_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:ellipsize="end"
android:lines="1"
android:text="Title"
android:textColor="@android:color/black"
android:textSize="18sp" />
<TextView
android:id="@+id/native_ad_body"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
android:text="des1"
android:textColor="@android:color/black"
android:textSize="15sp" />
<TextView
android:id="@+id/des2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
android:text=""
android:textColor="@android:color/black"
android:textSize="15sp" />
<RatingBar
android:id="@+id/rating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:isIndicator="false"
android:numStars="5"
android:stepSize="0.5"/>
</LinearLayout>
</LinearLayout>
<!-- 适用于支持Native/Icon的广告源,具体请参考"聚合帮助" -->
<com.hisavana.mediation.ad.TMediaView
android:id="@+id/coverview"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/call_to_action"
android:paddingVertical="10dp"
android:layout_marginHorizontal="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="DOWNLOAD NOW!"
android:gravity="center"
android:textAllCaps="false" />
</LinearLayout>
<!-- 广告⻆标,适用于广告源Hisavana、Facebook、Pangle、Mintegral、Bigo -->
<com.hisavana.mediation.ad.TAdChoicesView
android:id="@+id/adChoicesView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="150dp"
android:layout_marginTop="100dp" />
<!-- 关闭按钮,适用于广告源Hisavana -->
<com.hisavana.mediation.ad.TAdCloseView
android:id="@+id/adCloseView"
android:layout_toLeftOf="@+id/adChoicesView"
android:layout_width="12dp"
android:layout_height="12dp"/>
<!-- 广告源Hisavana 对于跳到PalmStore落地页的广告,必须添加storeMarkView(应用商店标识),否则会影响下载广告的跳转链路。 -->
<com.hisavana.mediation.ad.TStoreMarkView
android:id="@+id/store_mark_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true" />
</RelativeLayout>
Icon:适用于广告源Hisavana,新增Icon广告元素的子布局文件item_icon.xml
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ad_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/item_background">
<com.hisavana.mediation.ad.TIconView
android:id="@+id/ad_icon"
android:layout_width="80dp"
android:layout_height="80dp"
android:scaleType="fitCenter"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
步骤三:数据与视图绑定
Native:适用于支持Native/Icon的广告源,具体请参考聚合帮助,绑定如下所示
用TNativeAd对象把TAdNativeView、TAdNativeInfo、ViewBinder三个对象做个捆绑动作。
if (tNativeAd != null && tNativeAd.hasAd()) {
// 通过tNativeAd获取所有的TAdNativeInfo,通常情况下数组只有一条数据
List<TAdNativeInfo> nativeInfos = tNativeAd.getNativeAdInfo();
if (nativeInfos != null && !nativeInfos.isEmpty()) {
// 单页面单个广告场景,展示前需要将上一个mNativeInfo资源释放
if (mNativeInfo != null) {
mNativeInfo.release();
}
// 单页面所定义的全局变量mNativeInfo,目的是单个广告场景展示前将上一个mNativeInfo资源释放,以及统一在"onDestroy()"处释放资源
mNativeInfo = nativeInfos.get(0);
if (mNativeInfo == null) return;
// 子布局的信息存储器
ViewBinder viewBinder = new ViewBinder.Builder(R.layout.native_install)
// 设置标题控件的id
.titleId(R.id.native_ad_title)
// 设置icon控件的id
.iconId(R.id.native_ad_icon)
// 设置响应动作控件的id
.callToActionId(R.id.call_to_action)
// 设置描述控件的id
.descriptionId(R.id.native_ad_body)
// 设置广告主图控件的id
.mediaId(R.id.coverview)
// 设置广告⻆标控件的id
.adChoicesView(R.id.adChoicesView)
// 设置广告关闭控件的id
.adCloseView(R.id.adCloseView)
// 必选项,设置应用商店标识控件的id
.storeMarkView(R.id.store_mark_view)
// 假如需要自定义广告点击事件,则调用`actionIds(Integer... actionIds)`方法,添加相关view id
.actionIds(R.id.call_to_action)
.sponsoredId(R.id.sponsored)
.ratingId(R.id.rating)
.priceId(R.id.price)
.likesId(R.id.likes)
.downloadsId(R.id.downloads)
/**
* 原生广告渲染方式分为:
* NativeContextMode.NORMAL:普通模式
* NativeContextMode.LIST:列表模式
*/
.contextMode(NativeContextMode.NORMAL)
.build();
// 判断广告是否过期
if (mNativeInfo.isExpired()) {
AdLogUtil.Log().d("NativeAdActivity", "过期了");
} else {
// 数据与视图绑定
tNativeAd.bindNativeView(nativeView, mNativeInfo, viewBinder);
}
}
}
Icon:适用于广告源Hisavana,绑定如下所示
if (tNativeAd != null && tNativeAd.hasAd()) {
// 通过tNativeAd获取所有的TAdNativeInfo
List<TAdNativeInfo> nativeInfos = tNativeAd.getNativeAdInfo();
if (nativeInfos != null && !nativeInfos.isEmpty()) {
// 单页面需要展示多个广告时,无需在此处释放资源,请统一在"onDestroy()"处释放资源
if (mNativeInfo != null) {
mNativeInfo.release();
}
// 示例只展示单页面单个icon广告,假如需要展示多个可自行通过RecyclerView添加绑定
mNativeInfo = nativeInfos.get(0);
if (mNativeInfo == null) return;
// 子布局的信息存储器
ViewBinder viewBinder = new ViewBinder.Builder(R.layout.item_icon)
// 设置icon控件的id
.iconId(R.id.ad_icon)
/**
* 广告渲染方式分为:
* NativeContextMode.NORMAL:普通模式
* NativeContextMode.LIST:列表模式
*/
.contextMode(NativeContextMode.NORMAL)
.build();
// 判断广告是否过期
if (mNativeInfo.isExpired()) {
AdLogUtil.Log().d("NativeAdActivity", "过期了");
} else {
// 数据与视图绑定
tNativeAd.bindNativeView(nativeView, mNativeInfo, viewBinder);
} }
}
}
/**
* 可选项
* 对于需要统计到达广告场景的应用,可自行设置场景值
* 主要目的是统计当前广告场景利用率,第一个参数自定义场景名称,第二个参数广告数量
*/
String sceneToken = tNativeAd.enterScene("native_scene_name", 1);
tNativeAd.bindNativeView(nativeView, mNativeInfo, viewBinder, sceneToken);
列表场景
以下场景适用于Native广告
定义数据类,用于保存nativeInfo和sceneToken
public calss ItemBean{
private TAdNativeInfo nativeInfo;
private TNativeAd nativeAd;
public String sceneToken;
}
列表中绑定布局
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder vhHolder, int position) {
ItemBean itemBean = data.get(position);
// 主要目的是统计当前广告场景利用率,第一个参数自定义场景名称,第二个参数广告数量
if(TextUtils.isEmpty(itembean.sceneToken)){
itembean.sceneToken = tNativeAd.enterScene("native_scene_name", 1);
}
List<TAdNativeInfo> nativeInfos = tNativeAd.getNativeInfo();
itemBean.nativeInfo = nativeInfos.isEmpty ? null : nativeInfos.get(0)
if(itemBean.nativeInfo == null || itemBean.nativeInfo.isExpired()){
// 重新加载当前广告
...
return;
}
//用户构建ViewBinder
...
//展示广告
itemBean.tNativeAd.bindNativeView(nativeView, itemBean.nativeInfo, viewBinder, itemBean.sceneToken);
}
销毁广告
请及时回收广告,否则App会发生内存泄漏。
// 此处回调适用于广告源Hisavana,建议统一在"onDestroy()"处释放资源,后续版本将会移除此回调
@Override
public void onClosed(TAdNativeInfo tAdNativeInfo) {
/**
* 点击广告的关闭按钮时,请释放广告资源
* 假如在列表场景,可根据taNativeInfo来确定当前的广告在列表中的位置,动态的删除
*/
if(tAdNativeInfo == mNativeInfo){
if(mNativeInfo != null) {
mNativeInfo.release();
}
if (nativeView != null) {
nativeView.release();
}
mNativeInfo = null;
nativeView = null;
}
}
以下示例只对于单页面单个Native/Icon广告资源释放;多个Native/Icon场景需要接入方自行管理统一在onDestroy()处释放资源,释放对象为TNativeAd、TAdNativeInfo、TAdNativeView,具体请参考Mediation Demo
// 退出广告场景后,请销毁该广告对象。
@Override
protected void onDestroy() {
if (tNativeAd != null) {
tNativeAd.destroy();
tNativeAd = null;
}
if(mNativeInfo != null) {
mNativeInfo.release();
}
if (nativeView != null) {
nativeView.release();
}
mNativeInfo = null;
nativeView = null;
super.onDestroy();
}
其它API
API调用 | 介绍 |
---|---|
tNativeAd.hasAd() | 当前是否有可用广告 |
mNativeInfo.isExpired() | 用来判断广告是否在投放期,在展示广告前使用 |
高级设置


所需的广告要素
Hisavana | Admob | Pangle | Mintegral | Yandex | Bigo | ||
---|---|---|---|---|---|---|---|
主图(mediaId) | 必须 | 必须 | 必须 | 必须 | 必须 | 必须 | 非必须 |
广告标识(adChoicesView) | 必须 | Admob自行渲染 | 必须 | 必须 | 必须 | 无 | 非必须 |
标题(titleId) | 非必须 | 必须 | 必须 | 必须 | 必须 | 必须 | 非必须 |
图标(iconId) | 非必须 | 必须 | 必须 | 必须 | 必须 | 必须 | 非必须 |
关闭按钮(adCloseView) | 非必须 | 自行添加 (谷歌建议必须) | 必须 | 必须 | 必须 | 无 | 无 |
应用商店图标(adStoreMarkView) | 必须 | 无 | 无 | 无 | 无 | 无 | 无 |
描述(descriptionId) | 非必须 | 非必须 | 非必须 | 必须 | 必须 | 非必须 | 非必须 |
按钮(callToActionId) | 非必须 | 必须 | 必须 | 必须 | 必须 | 必须 | 非必须 |
评分(ratingId) | 非必须 | 非必须 | 无 | 无 | 无 | 非必须 | 无 |
价格(priceId) | 无 | 非必须 | 无 | 无 | 无 | 必须 | 无 |
年龄限制标签(sponsoredId) | 无 | 无 | 无 | 无 | 无 | 必须 | 无 |
免责声明(adDisclaimerView) | RU必须 | 无 | 无 | 无 | 无 | 必须 | 无 |
RU合规角标(adBadgeView) | RU必须 | 无 | 无 | 无 | 无 | 无 | 无 |
域名(domainId) | 无 | 无 | 无 | 无 | 无 | 必须 | 无 |
菜单图标(feedbackId) | 无 | 无 | 无 | 无 | 无 | 必须 | 无 |
展示俄罗斯合规广告
针对产品在俄罗斯上架发布、并通过 mediation-lib 变现(集成 mediation-lib sdk)的开发者需严格遵俄罗斯广告相关法律。
mediation-lib sdk 3.0.8 及以上版本支持展示符合俄罗斯广告合规的广告,需要您在自渲染 Native 广告时额外做一些集成相关的操作,适用于广告源Hisavana。
主要集成的区别在 展示广告 栏目中的 步骤二 和 步骤三,我们需要替换 广告AD角标 视图的展示方式,并且新增 免责声明 视图。
提醒:下述
通用版
指非俄罗斯合规版本。
步骤一:创建TAdNativeView对象。
同上。
步骤二:新增子布局文件
新增Native广告元素的子布局文件native_install.xml,其中广告元素中的icon用TIconView渲染,大图用TMediaView渲染。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ad_unit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/item_background"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:ignore="MissingDefaultResource">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:paddingTop="10dp"
android:paddingBottom="10dp">
<com.hisavana.mediation.ad.TIconView
android:id="@+id/native_ad_icon"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="5dp"
android:paddingRight="16dp">
<TextView
android:id="@+id/native_ad_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:ellipsize="end"
android:lines="1"
android:text="Title"
android:textColor="@android:color/black"
android:textSize="18sp" />
<TextView
android:id="@+id/native_ad_body"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
android:text="des1"
android:textColor="@android:color/black"
android:textSize="15sp" />
<!-- des2 -->
<TextView
android:id="@+id/des2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
android:text=""
android:textColor="@android:color/black"
android:textSize="15sp" />
<RatingBar
android:id="@+id/rating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:stepSize="0.5"
android:isIndicator="false"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/price"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="price" />
<TextView
android:id="@+id/likes"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Likes" />
<TextView
android:id="@+id/downloads"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Downloads" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.hisavana.mediation.ad.TMediaView
android:id="@+id/coverview"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<!-- 必选项:俄罗斯合规版本免责声明 View -->
<com.hisavana.mediation.ad.TAdDisclaimerView
android:id="@+id/ad_disclaimer_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"/>
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:orientation="horizontal">
<TextView
android:id="@+id/sponsored"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="12dp"
android:layout_weight="1"
android:paddingLeft="16dp"
android:text="Sponsored"
android:textSize="15sp" />
<Button
android:id="@+id/call_to_action"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:text="DOWNLOAD NOW!"
android:textAllCaps="false" />
</LinearLayout>
</LinearLayout>
<!-- 广告来源标示 -->
<com.hisavana.mediation.ad.TAdChoicesView
android:id="@+id/adChoicesView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"/>
<com.hisavana.mediation.ad.TAdCloseView
android:id="@+id/adCloseView"
android:layout_toStartOf="@+id/adChoicesView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<com.hisavana.mediation.ad.TStoreMarkView
android:id="@+id/store_mark_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true" />
<!-- 必选项:俄罗斯合规版本 AD 角标 -->
<com.hisavana.mediation.ad.TAdBadgeView
android:id="@+id/ad_badge_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
步骤三:捆绑数据与视图
用TNativeAd对象把TAdNativeView、TAdNativeInfo、ViewBinder三个对象做个捆绑动作。
if (tNativeAd != null && tNativeAd.hasAd()) {
// 通过tNativeAd获取所有的TAdNativeInfo,通常情况下数组只有一条数据
List<TAdNativeInfo> nativeInfos = tNativeAd.getNativeAdInfo();
if (nativeInfos != null && !nativeInfos.isEmpty()) {
// 单页面单个广告场景,展示前需要将上一个mNativeInfo资源释放
if (mNativeInfo != null) {
mNativeInfo.release();
}
// 单页面所定义的全局变量mNativeInfo,目的是单个广告场景展示前将上一个mNativeInfo资源释放,以及统一在"onDestroy()"处释放资源
mNativeInfo = nativeInfos.get(0);
if (mNativeInfo == null) return;
// 子布局的信息存储器
ViewBinder viewBinder = new ViewBinder.Builder(R.layout.native_install)
// 设置标题控件的id
.titleId(R.id.native_ad_title)
// 设置icon控件的id
.iconId(R.id.native_ad_icon)
// 设置响应动作控件的id
.callToActionId(R.id.call_to_action)
// 设置描述控件的id
.descriptionId(R.id.native_ad_body)
// 设置广告主图控件的id
.mediaId(R.id.coverview)
// 设置广告来源控件的id
.adChoicesView(R.id.adChoicesView)
// 必选项:设置俄罗斯合规版本 AD 角标
.adBadgeView(R.id.ad_badge_view)
// 设置广告关闭控件的id
.adCloseView(R.id.adCloseView)
// 必选项:设置应用商店标识控件的id
.storeMarkView(R.id.store_mark_view)
// 假如需要自定义广告点击事件,则调用`actionIds(Integer... actionIds)`方法,添加相关view id
.actionIds(R.id.call_to_action)
.sponsoredId(R.id.sponsored)
.ratingId(R.id.rating)
.priceId(R.id.price)
.likesId(R.id.likes)
.downloadsId(R.id.downloads)
// 必选项:设置俄罗斯合规版本 免责声明
.adDisclaimerView(R.id.ad_disclaimer_view)
/**
* 原生广告渲染方式分为:
* NativeContextMode.NORMAL:普通模式
* NativeContextMode.LIST:列表模式
*/
.contextMode(NativeContextMode.NORMAL)
.build();
// 判断广告是否过期
if (mNativeInfo.isExpired()) {
AdLogUtil.Log().d("NativeAdActivity", "过期了");
} else {
// 数据与视图绑定
tNativeAd.bindNativeView(nativeView, mNativeInfo, viewBinder);
} }
}
}
/**
* 可选项
* 对于需要统计到达广告场景的应用,可自行设置场景值
* 主要目的是统计当前广告场景利用率,第一个参数自定义场景名称,第二个参数广告数量
*/
String sceneToken = tNativeAd.enterScene("native_scene_name", 1);
tNativeAd.bindNativeView(nativeView, mNativeInfo, viewBinder, sceneToken);