最近接了一波各种平台的广告,从单个到多个,再到整合到一起,接入方式和流程也算是都嚼了一遍了。
- 广点通
- 穿山甲
- 百度
- 快友AdView
- 推啊
通用
一、后台 1、申请相应平台账号,创建应用,拿到appId或者appKey。 2、根据类型创建广告位 二、客户端 1、导入jar/aar包,和其需要引用的第三方库,初始化 2、声明权限,动态申请权限 3、清单文件中配置 4、7.0以上自动安装适配 5、根据api请求展示广告
特殊
1、快友平台请求广告的时候不是根据posId,而是根据应用id请求。 2、推啊sdk的广告位创建、配置等,我们在后台创建无效,需要联系对方审核和配置,如样式、能否关闭等。 3、快友平台其实是个聚合平台,其内部也是集成了百度、广点通、今日头条三种广告,提高填充率。所以单独集成的话同样要添加其他几家广告的jar包和三方库。
背景:
1、广告请求有一定几率失败、或者没有广告填充,为了提高展示率,我们要在失败后重新请求广告,直到请求成功为止。 2、针对某一平台提供的广告内容可能不符合用户喜好,我们要请求不同平台的广告,让用户能看到更多类型的广告。 3、运营希望能根据用户喜好或者平台广告质量、收益等动态调整广告平台,我们要把广告平台的配置和切换做到动态调整,需要通过后台或者接口读取配置
结果:
- 提升了广告展示率,启动开屏广告展示率由原来的30-45%提升到60-75%,间接提升了广告点击率和收益。
- 动态调整的实现让运营能够通过ecpm、市场的变化及时调整广告配置,达到收益最大化。
实现:
轮询
维护一个列表,创建一个广告的时候进行数据初始化操作。列表中对象为封装的一个广告抽象类,该类中定义了一些所有平台、所有类型广告公共的方法和属性。
每个广告都有自己独有的请求广告的方法,在请求广告过程中设置监听,当返回失败时,从列表中取出下一个广告,开始请求。
当列表中所有广告请求失败时,回调该次广告展示失败。 亦或者如开屏广告,我们不可能让用户一直等在启动页等广告,如果时间到了最大等待时间,回调该次广告展示失败。
多平台
接入多个平台的广告,虽然每个平台广告请求方式不一样,但我们要的结果都是一样的,都是拿到一个填充好数据的View,所以我们将请求方法抽象,每种类型的广告自己分别做请求,只要最后能把View塞到我们的Container中就可以了。
针对切换机制,我们采取多种机制 1、配置平台比例,根据比例随机请求该平台的广告 2、保存用户点击过的广告类型,下一次将该平台后置 3、记录每个平台广告曝光次数,如果该平台曝光次数过多,将该平台后置
动态调整
根据接口拿到一个配置实体类。类中,我们定义了各种广告的平台、顺序、权重,根据这个配置进行列表的初始化操作。