原生广告
原生广告为定制化广告类型,为保证APP观感及使用体验,用户通过API接口获取广告物料数据,在内容页面使用广告数据封装展示视图。
开发者需自行处理广告点击事件以及发出广告监测请求,以便第三方监测和统计,点击事件包括跳转及下载两种类型,监测包括曝光监测地址、点击监测地址、转化检测地址三种类型。
接口定义
/**
* 获取应用墙广告数据
*
* @param context 上下文
* @param adId 代码位ID
* @param nativeListener 回调检测监听
*/
public void requestAppWall(final Context context, final String adId, final NativeListener<NativeAppWallData> nativeListener)
/**
* 获取轮播图广告数据
*
* @param context 上下文
* @param adId 代码位ID
* @param nativeListener 回调检测监听
*/
public void requestCarousel(final Context context, final String adId, final NativeListener<NativeCarouselData> nativeListener)
/**
* 获取信息流广告数据
*
* @param context 上下文
* @param adId 代码位ID
* @param nativeListener 回调检测监听
*/
public void requestFeeds(final Context context, final String adId, final NativeListener<NativeFeedsData> nativeListener)
/**
* 获取新闻放送广告数据
*
* @param context 上下文
* @param adId 代码位ID
* @param nativeListener 回调检测监听
*/
public void requestNews(final Context context, final String adId, final NativeListener<NativeNewsData> nativeListener)
/**
* 获取瀑布流广告数据
*
* @param context 上下文
* @param adId 代码位ID
* @param nativeListener 回调检测监听
*/
public void requestWaterfall(final Context context, final String adId, final NativeListener<NativeWaterfallData> nativeListener)
/**
* 原生广告点击
*
* @param context 上下文
* @param baseData 原生广告数据
* @param statusChangeListener 广告点击事件状态监听
* @return boolean 点击事件是否成功
*/
public boolean onClick(Context context, BaseData baseData, NativeAdStatusChangeListener statusChangeListener)
/**
* 原生广告曝光
*
* @param baseData 原生广告数据
*/
public void onExposure(BaseData baseData)
使用场景
在展示广告的内容页面,调用接口获取原生广告数据,接口回调成功即可将数据合并至展示在页面中。
使用示例
- 获取原生广告数据示例
NativeManager.getInstance().requestAppWall(this, adId_AppWall, new NativeListener<NativeAppWallData>() {
@Override
public void onRequestSuccess(NativeAppWallData data) {
//TODO 展示广告并处理监测事件
Log.e("DemoView", "数据获取成功 :" + "adId:" + data.getTagid() + "," + new Gson().toJson(data));
}
@Override
public void onRequestFailed(String adId, int code, String message) {
Log.e("DemoView", "数据加载失败 : code = " + code + " , message = " + message + ", adId:" + adId);
}
});
- 广告布局容器
java NativeFrameLayout NativeGridLayout NativeLinearLayout NativeRelativeLayout - 广告触摸事件
//MonitorEvent-广告视图事件坐标缓存
//构造方式
MonitorEvent monitorEvent = new MonitorEvent();
MonitorEvent monitorEvent = new MonitorEvent(downX, downY, upX, upY);
//动态设置
monitorEvent.onTouch(MotionEvent event)//用户触摸事件
monitorEvent.setDownX();//用户手指按下时的横坐标
monitorEvent.setDownY();//用户手指按下时的纵坐标
monitorEvent.setUpX();//用户手指离开设备屏幕时的横坐标
monitorEvent.setUpY();//用户手指离开设备屏幕时的横坐标
- 原生广告点击
/**
* 原生广告点击处理(监测宏)
*
* @param context 上下文
* @param baseData 原始数据
* @param monitorEvent TochEvent事件
* @param statusChangeListener 状态回调监听
* @return 内部错误返回 false
*/
public boolean onClick(Context var1, BaseData var2, MonitorEvent var3, NativeAdStatusChangeListener var4)
/**
* 原生广告点击处理
*
* 该方法已弃用
* 该方法无法上报监测宏字段 ,会减少开发者广告收益!
*
* @param context 上下文
* @param baseData 原始数据
* @param statusChangeListener 状态回调监听
* @return 内部错误返回 false
*/
@Deprecated
public boolean onClick(Context context, BaseData baseData, NativeAdStatusChangeListener statusChangeListener)
//方式1
//使用SDK布局容器会自动获取MonitorEvent相关信息
//用户也可以自行捕获视图触摸事件,按下抬起坐标传入MonitorEvent中
click.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//SDK布局容器.getMonitorEvent()直接获取MonitorEvent无需自己处理自定义视图及事件传递
//通知SDK触发广告点击事件
NativeManager.getInstance().onClick(NativeFeedsDemo1Activity.this, data, adLayout.getMonitorEvent(), statusChangeListener);
}
});
//曝光的调用
NativeManager.getInstance().onExposure(data);
//方式2
//在展示广告物料数据时调用容器init()方法
//其余事情交由SDK内部处理
nativeLayout.init(data, statusChangeListener);
原生广告
基础广告 数据模型
public class BaseData<T> implements Serializable {
//返回状态码 参见《4 状态码定义》
private int status;
//物料ID
private String cid;
//广告id
private String tagid;
//0:banner,1:插屏,2:开屏,3:原生 11:前贴片,12:中贴片,13:后贴片
private int adt;
//物料宽
private int w;
//物料高
private int h;
//图片地址
private String imgurl;
//落地页 h5跳转
private String ldp;
//应用下载地址
private String app_download_url;
//1-h5,2-img,3-video
private int ctype = 1;
//广告物料 adt=0或adt=1或adt=2时填写,广告的 html 内容会经由此字段返回。需要使用webview 渲染
private String adm;
//贴片创意类型 adt=11/12/13时填写,1-vast;2-object
private int vtype;
//vast类型贴片物料 vtype=1时必填
private String vast;
//object类型贴片物料 vtype=2事必填,贴片物料详情见下
private VideoAdData video;
//曝光监测地址,多个
private List<String> imp_tracking;
//点击监测地址,多个
private List<String> clk_tracking;
//点击行为 0-打开网页,1-下载;不填写默认为打开网页
private int interact_type;
//转化监测地址 interact_type=1时有效,下载类广告详情见下
private List<DownloadAdData> conv_tracking;
//原生创意物料 adt=3时填写,原生创意物料详情见下
private T nativead ;
}
应用墙广告 数据模型
public class NativeAppWallData extends BaseData<NativeAppWall>
public class NativeAppWall {
private String title;
private String ldp;
private String desc;
private String rating;
private String button;
private String download_count;
private String app_download_url;
private List<IconBean> icon;
}
轮播图广告 数据模型
public class NativeCarouselData extends BaseData<NativeCarousel>
public class NativeCarousel {
private String title;
private String ldp;
private String desc;
private String app_download_url;
private List<ImgBean> img;
}
信息流广告 数据模型
public class NativeFeedsData extends BaseData<NativeFeeds>
public class NativeFeeds {
private String title;
private String ldp;
private String desc;
private String rating;
private String button;
private String download_count;
private String app_download_url;
private List<IconBean> icon;
private List<ImgBean> img;
}
新闻放送广告 数据模型
public class NativeNewsData extends BaseData<NativeNews>
public class NativeNews {
private String title;
private String ldp;
private String rating;
private String app_download_url;
private List<IconBean> icon;
}
瀑布流广告 数据模型
public class NativeWaterfallData extends BaseData<NativeWaterfall>
public class NativeWaterfall {
private String title;
private String ldp;
private String desc;
private String app_download_url;
private List<ImgBean> img;
}
原生广告点击后的状态回调 数据模型
public class NativeAdStateData {
//原生广告的广告位id
private String adId;
//点击后的行为类型:
//Config.NATIVE_AD_CLICK_TYPE_WEB 点击调转至h5页面
//Config.NATIVE_AD_CLICK_TYPE_DEEPLINK 点击跳转至第三方app某个页面
//Config.NATIVE_AD_CLICK_TYPE_DOWNLOAD 点击进行下载
private int clickedType;
//当clickedType = Config.NATIVE_AD_CLICK_TYPE_DOWNLOAD时此字段才有用
//Config.NATIVE_AD_CLICK_TYPE_DOWNLOAD_PENDING 等待下载
//Config.NATIVE_AD_CLICK_TYPE_DOWNLOAD_RUNNING 正在下载
//Config.NATIVE_AD_CLICK_TYPE_DOWNLOAD_FAILED 下载失败
//Config.NATIVE_AD_CLICK_TYPE_DOWNLOAD_SUCCESS 下载成功
//Config.NATIVE_AD_CLICK_TYPE_DOWNLOAD_PAUSED 下载暂停
private int downloadType;
//当clickedType = Config.NATIVE_AD_CLICK_TYPE_DOWNLOAD时此字段才有用
//当前的下载进度 例子: downloadProgress = 30 代表下载了30%
private int downloadProgress;
}