接入整合各个广告平台

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

    推荐阅读