本文跟大家讲讲广告投放系统,看商业化广告各方的协作流程是怎样的,以及有什么样的难点,其中SDK的接口又是如何设计的?
一、商业化广告各方协作流程
上游:
对接基础服务端提供基础服务;
对接SSP、直投等等自有广告资源;
对接第三方广告SDK(广点通、百度白青藤、头条穿山甲)。
下游:
提供给集团公司各个客户端使用;
为大数据分析提供数据。
二、广告SDK工作流程
(1)客户端初始化SDK,SDK初始化并获取配置(基本配置(默认),流量控制配置等)。
(2)客户端传入广告位从SDK获取广告,SDK根据流量配置获取广告返回(SSP、广点通)。
(3)客户端负责展示广告,SDK上报曝光和点击等统计事件,同时也给客户端回调接口。
(4)处理失败打点数据,缓存和上报。
三、难点
(1)版本兼容
其中包括SDK自身配置和数据库缓存的的版本兼容,其实更重要的是对客户端接口的版本兼容。SDK在版本迭代中会去对接多个第三方广告投放方,也会增加各类广告展示类型,为保证app升级SDK的无缝对接,需要对app端提供一致的接口设计,保证聚合SDK新增其他第三方和其他广告类型时能完美支持。
(2)数据准确性
广告的打点数据是结算的重要依据,需保证上报的数据的准确性,不丢失,且可靠。这里设计到一系列的优化项,对广告数据获取的成功率提升,对广告展示、点击的数据准确性保证的技术运用,同时提供监测手段的手段运用。
(3)SDK的健壮性要求
尤其处理广告请求并发,数据打点并发的情况下的线程安全问题。
(4)SDK的其他性能指标的关注
执行时间、内存、cpu、无crash。特殊广告类型,如开屏广告的性能要求。展示流畅,加载需要控制在1-3s内。
四、SDK的接口设计
初始化接口。如果后台不处理多方SDK的应用ID兼容情况。则需要让app传入第三方SDK的应用ID列表。可通过配置model传入SDK。包含我们定义的app Id、第三方SDK注册定义的应用ID、以及其他公共参数。
各类广告类型的广告view或者实体接口,需要传入广告位ID。
加载广告接口,加载成功的数据自动装载该view。
各类事件回调接口。处理加载成功、加载失败、曝光、关闭、点击、广告落地页即将展示、即将关闭展示、已经展示,已经关闭等回调。(需要定制广告投放系统联系微信:136837241)
五、SDK的功能设计
(1)配置的获取和版本缓存和更新支持。
带版本号请求接口、app Id等信息请求配置,成功后缓存。
在app启动和退出后台、回到前台均更新配置。
(2)数据获取支持超时和重试。
(3)数据打点上报
SSP的点击、曝光
上报到大数据所有事件
(4)失败打点数据的缓存和上报处理
失败的打点需缓存到本地数据库,再定时上报。
定时间隔由服务器控制,默认值60s。
无网络不上报。
上报成功后删除本地缓存数据。
失败继续上报,每个缓存数据重试若干次后舍弃。重试次数由配置控制,默认3次。
(5)流量控制功能支持
SSP、第三方SDK分流控制。根据配置,按优先级去分配。
(6)配置及时更新
静默推送更新app端配置。
六、开屏广告功能设计
如果展示第三方SDK的广告,扔给第三方处理即可。如果是SSP或者DSP,需要实现所有展示和功能逻辑。
1)接口
传入广告位创建开屏视图方法
允许app控制超时时间方法,SDK提供默认值
控制背景色方法(百度不支持)
控制背景图方法(百度不支持)
支持logo视图方法
支持跳出按钮的位置控制方法(百度不支持)
加载广告方法
2)广告获取展示
客户端请求广告,SDK根据配置优先级决定交给SSP还是广点通处理。(并发也可能按需)
如是SSP处理,则请求SSP接口(需上传参数确定),获取广告后,绘制视图展示(需要单张图),点击跳转支持deeplink、webview展示功能。
3)图片、视频的缓存
七、其他广告类型设计
略过
八、SDK架构图