主题
信息流广告
1. 主要API
1.1 ApexAdxNativeAd
com.apex.adx.ApexAdxNativeAd
| 方法名 | 方法介绍 |
|---|---|
| ApexAdxNativeAd(Context context, ApexAdxNativeRequest request) | 构造方法。参数说明:activity(展示广告的 activity)、request(广告请求对象)。 |
| loadNativeAd(ApexAdxNativeAdLoadListener listener) | 请求广告。参数说明:listener(请求广告相关状态会通过 ApexAdxNativeAdLoadListener 通知开发者)。 |
| List getNativeListData() | 广告拉取成功后,获取广告集合。 |
| destroy() | 销毁广告。 |
1.2 ApexAdxNativeRequest
com.apex.adx.req.ApexAdxNativeRequest
| 方法名 | 方法介绍 |
|---|---|
| ApexAdxNativeRequest(String pid, String userId, int adCount, Map options) | 构造方法。参数说明:pid(广告位Id)、userId(用户Id可选)、adCount(请求广告数量,最大3)、options(扩展参数,可传任意)。 |
1.3 ApexAdxNativeAdLoadListener
com.apex.adxs.listener.ApexAdxNativeAdLoadListener
| 方法名 | 方法介绍 |
|---|---|
| onFeedLoad(String pid) | 广告成功加载。参数说明:pid(广告位Id)。 |
| onError(ApexAdxError error, String pid) | 广告加载失败。参数说明:error(报错信息,具体可看其内部code和msg)、pid(报错的广告位Id)。 |
1.4 ApexAdxNativeData
com.apex.adxs.bean.ApexAdxNativeData
| 方法名 | 方法介绍 |
|---|---|
| getAppInfo() | 获取下载类广告六要素信息,媒体可根据需要自行展示。 |
| getExpressAdView() | 获取模版渲染的广告View |
| render() | 广告渲染方法 |
| isExpressAd() | 是否为模版渲染广告 |
| destroy() | 销毁广告单元对象 |
| connectAdToView(Activity activity, ApexAdxNativeContainer adContainer, ApexAdxNativeRender adRender) | 自渲染具体实现方法。参数说明:activity(展示广告的 activity)、adContainer(根容器)、adRender(广告渲染实现类对象)。 |
| setInteractionListener(NativeAdInteractionListener adInteractionListener) | 设置广告交互监听。参数说明:adInteractionListener(广告交互监听回调对象)。 |
| setMediaListener(NativeADMediaListener nativeADMediaListener) | 设置自渲染Video监听。参数说明:nativeADMediaListener(视频播放监听回调对象)。 |
| setDislikeInteractionCallback(Activity activity, DislikeInteractionCallback dislikeInteractionCallback) | 设置Dislike监听。参数说明:activity(dislike弹窗的acticity)、dislikeInteractionCallback(dislike监听回调对象)。 |
| setDownloadListener(AppDownloadListener appDownloadListener) | 设置广告下载监听。参数说明:appDownloadListener(广告下载监听回调对象)。 |
1.5 NativeAdInteractionListener
com.apex.adxs.bean.ApexAdxNativeData$NativeAdInteractionListener
| 方法名 | 方法介绍 |
|---|---|
| onADExposed() | 广告曝光。 |
| onADError(ApexAdxError error) | 广告展示失败。参数说明:error(报错信息,具体可看其内部code和msg)。 |
| onADRenderSuccess(View view, float width, float height) | 广告渲染成功。参数说明:view(模版渲染的广告view)、width(view宽度)、height(view高度)。 |
| onADClicked() | 广告点击。 |
1.6 NativeADMediaListener
com.apex.adxs.bean.ApexAdxNativeData$NativeADMediaListener
| 方法名 | 方法介绍 |
|---|---|
| onVideoLoad() | 视频加载成功。 |
| onVideoError(ApexAdxError error) | 视频播放失败。参数说明:error(报错信息,具体可看其内部code和message)。 |
| onVideoStart() | 视频开始播放。 |
| onVideoPause() | 视频暂停播放。 |
| onVideoResume() | 视频恢复播放。 |
| onVideoCompleted() | 视频完成播放。 |
1.7 AppDownloadListener
com.apex.adxs.bean.ApexAdxNativeData$AppDownloadListener
| 方法名 | 方法介绍 |
|---|---|
| onIdle() | 下载静止状态。 |
| onDownloadActive(long totalBytes, long currBytes, String fileName, String appName) | 下载活动状态。参数说明:totalBytes(下载总字节)、currBytes(当前下载字节)、fileName(下载文件名)、appName(下载App名字)。 |
| onDownloadPaused(long totalBytes, long currBytes, String fileName, String appName) | 下载暂停状态。参数说明:totalBytes(下载总字节)、currBytes(当前下载字节)、fileName(下载文件名)、appName(下载App名字)。 |
| onDownloadFailed(long totalBytes, long currBytes, String fileName, String appName) | 下载失败。参数说明:totalBytes(下载总字节)、currBytes(当前下载字节)、fileName(下载文件名)、appName(下载App名字)。 |
| onDownloadFinished(long totalBytes, String fileName, String appName) | 下载结束。参数说明:totalBytes(下载总字节)、fileName(下载文件名)、appName(下载App名字)。 |
| onInstalled(String fileName, String appName) | 安装完成。参数说明:fileName(安装文件名)、appName(安装App名字)。 |
1.8 DislikeInteractionCallback
com.apex.adxs.bean.ApexAdxNativeData$DislikeInteractionCallback
| 方法名 | 方法介绍 |
|---|---|
| onShow() | Dislike弹窗显示。 |
| onSelected(int position, String value, boolean enforce) | Dislike弹窗Item点击。参数说明:position(点击的位置)、value(点击的位置的文字选项)、enforce(是否关闭广告)。有穿山甲广告源时,必须在该方法里移除广告 |
| onCancel() | Dislike弹窗取消。 |
1.9 安卓下载应用六要素信息
由于国内监管部门要求,在安卓下载类广告中,需要给用户披露下载的应用的六要素信息。开发者可以通过getAppInfo() 方法获取。六要素信息包括
| 信息 | 字段 | 支持的广告网络 |
|---|---|---|
| 应用名称 | getAppName() | |
| 开发者名称 | getDeveloperName() | |
| 应用版本 | getAppVersion() | |
| 隐私协议 | getPrivacyUrl() | |
| 权限列表 | getPermissionInfoUrl() | |
| 应用功能介绍 | getFunctionDescUrl() |
2. 接入代码示例
2.1 信息流广告加载
java
private ApexAdxNativeAd nativeAd;
private List<ApexAdxNativeData> nativeAdDataList;
//请求广告时可以传入期望的宽高
Map<String, Object> options = new HashMap<>();
options.put(ApexAdxConstants.AD_WIDTH, adWidth);//针对于模版广告有效、单位dp
options.put(ApexAdxConstants.AD_HEIGHT, adHeight);//默认自适应高度、单位dp
/**
* PID 必填
* USER_ID 可选
* AD_COUNT 必填 1-3
* OPTIONS 自定义参数 可选
*/
ApexAdxNativeRequest request = new ApexAdxNativeRequest(PID, USER_ID, AD_COUNT, options);
nativeAd = new ApexAdxNativeAd(this, request);
nativeAd.loadNativeAd(new ApexAdxNativeAdLoadListener() {
@Override
public void onError(ApexAdxError error, String pid) {
}
@Override
public void onFeedLoad(String pid) {
List<ApexAdxNativeData> unifiedADData = nativeAd.getNativeListData();
if (unifiedADData != null && unifiedADData.size() > 0) {
nativeAdDataList = unifiedADData;
}
}
});2.2 原生广告展示
java
private ViewGroup adContainer;
/**
* 请在收到onFeedLoad回调后再展示广告
* nativeAd.getNativeListData()获取广告
*/
List<ApexAdxNativeData> nativeAdDataList = nativeAd.getNativeListData();
if (nativeAdDataList != null && nativeAdDataList.size() > 0) {
ApexAdxNativeData nativeAdData = nativeAdDataList.get(0);
//绑定广告的监听
bindListener(nativeAdData);
nativeAdData.render();
View expressAdView = nativeAdData.getExpressAdView();
//媒体最终将要展示广告的容器(这里可以直接先addView,也可以在收到onRenderSuccess回调后addView)
if (adContainer != null) {
adContainer.removeAllViews();
adContainer.addView(expressAdView);
}
}2.3 原生广告销毁
java
//原生广告单元的销毁
if (nativeAdDataList != null && nativeAdDataList.size() > 0) {
for (ApexAdxNativeData adData : nativeAdDataList) {
if (adData != null) {
adData.destroy();
}
}
}
//原生请求广告对象的销毁
if (nativeAd != null) {
nativeAd.destroy();
}2.4 注意事项
重要提示
穿山甲信息流关闭时,需要在DislikeInteractionCallback的onSelected回调方法里,主动remove掉广告,否则有些广告会无法关闭,影响收益。
java
nativeAdData.setDislikeInteractionCallback(mActivity, new ApexAdxNativeData.DislikeInteractionCallback() {
@Override
public void onShow() {
}
@Override
public void onSelected(int i, String s, boolean b) {
ApexAdxLog.d("##########onSelected dislike option");
nativeViewHolder.container.removeAllViews();
}
@Override
public void onCancel() {
}
});