Page History

Nativeads

Last edited by 朱显松

原生广告


原生广告为定制化广告类型,为保证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;
}