廣告投放系統(tǒng):聚合廣告SDK與技術(shù)設(shè)計方案
本文跟大家講講廣告投放系統(tǒng),看商業(yè)化廣告各方的協(xié)作流程是怎樣的,以及有什么樣的難點(diǎn),其中SDK的接口又是如何設(shè)計的?
一、商業(yè)化廣告各方協(xié)作流程
上游:
- 對接基礎(chǔ)服務(wù)端提供基礎(chǔ)服務(wù);
- 對接SSP、直投等等自有廣告資源;
- 對接第三方廣告SDK(廣點(diǎn)通、百度白青藤、頭條穿山甲)。
下游:
- 提供給集團(tuán)公司各個客戶端使用;
- 為大數(shù)據(jù)分析提供數(shù)據(jù)。
二、廣告SDK工作流程
(1)客戶端初始化SDK,SDK初始化并獲取配置(基本配置(默認(rèn)),流量控制配置等)。
(2)客戶端傳入廣告位從SDK獲取廣告,SDK根據(jù)流量配置獲取廣告返回(SSP、廣點(diǎn)通)。
(3)客戶端負(fù)責(zé)展示廣告,SDK上報曝光和點(diǎn)擊等統(tǒng)計事件,同時也給客戶端回調(diào)接口。
(4)處理失敗打點(diǎn)數(shù)據(jù),緩存和上報。
三、難點(diǎn)
(1)版本兼容
其中包括SDK自身配置和數(shù)據(jù)庫緩存的的版本兼容,其實(shí)更重要的是對客戶端接口的版本兼容。SDK在版本迭代中會去對接多個第三方廣告投放方,也會增加各類廣告展示類型,為保證app升級SDK的無縫對接,需要對app端提供一致的接口設(shè)計,保證聚合SDK新增其他第三方和其他廣告類型時能完美支持。
(2)數(shù)據(jù)準(zhǔn)確性
廣告的打點(diǎn)數(shù)據(jù)是結(jié)算的重要依據(jù),需保證上報的數(shù)據(jù)的準(zhǔn)確性,不丟失,且可靠。這里設(shè)計到一系列的優(yōu)化項(xiàng),對廣告數(shù)據(jù)獲取的成功率提升,對廣告展示、點(diǎn)擊的數(shù)據(jù)準(zhǔn)確性保證的技術(shù)運(yùn)用,同時提供監(jiān)測手段的手段運(yùn)用。
(3)SDK的健壯性要求
尤其處理廣告請求并發(fā),數(shù)據(jù)打點(diǎn)并發(fā)的情況下的線程安全問題。
(4)SDK的其他性能指標(biāo)的關(guān)注
執(zhí)行時間、內(nèi)存、cpu、無crash。特殊廣告類型,如開屏廣告的性能要求。展示流暢,加載需要控制在1-3s內(nèi)。
四、SDK的接口設(shè)計
- 初始化接口。如果后臺不處理多方SDK的應(yīng)用ID兼容情況。則需要讓app傳入第三方SDK的應(yīng)用ID列表??赏ㄟ^配置model傳入SDK。包含我們定義的app Id、第三方SDK注冊定義的應(yīng)用ID、以及其他公共參數(shù)。
- 各類廣告類型的廣告view或者實(shí)體接口,需要傳入廣告位ID。
- 加載廣告接口,加載成功的數(shù)據(jù)自動裝載該view。
- 各類事件回調(diào)接口。處理加載成功、加載失敗、曝光、關(guān)閉、點(diǎn)擊、廣告落地頁即將展示、即將關(guān)閉展示、已經(jīng)展示,已經(jīng)關(guān)閉等回調(diào)。(需要定制廣告投放系統(tǒng)聯(lián)系微信:136837241)
五、SDK的功能設(shè)計
(1)配置的獲取和版本緩存和更新支持。
- 帶版本號請求接口、app Id等信息請求配置,成功后緩存。
- 在app啟動和退出后臺、回到前臺均更新配置。
(2)數(shù)據(jù)獲取支持超時和重試。
超時時間根據(jù)配置控制、重試次數(shù)根據(jù)配置控制。
(3)數(shù)據(jù)打點(diǎn)上報
- SSP的點(diǎn)擊、曝光
- 上報到大數(shù)據(jù)所有事件
(4)失敗打點(diǎn)數(shù)據(jù)的緩存和上報處理
- 失敗的打點(diǎn)需緩存到本地數(shù)據(jù)庫,再定時上報。
- 定時間隔由服務(wù)器控制,默認(rèn)值60s。
- 無網(wǎng)絡(luò)不上報。
- 上報成功后刪除本地緩存數(shù)據(jù)。
- 失敗繼續(xù)上報,每個緩存數(shù)據(jù)重試若干次后舍棄。重試次數(shù)由配置控制,默認(rèn)3次。
(5)流量控制功能支持
SSP、第三方SDK分流控制。根據(jù)配置,按優(yōu)先級去分配。
(6)配置及時更新
- 部分廣告類型需確保等待最新配置返回;
- 靜默推送更新app端配置。
六、開屏廣告功能設(shè)計
如果展示第三方SDK的廣告,扔給第三方處理即可。如果是SSP或者DSP,需要實(shí)現(xiàn)所有展示和功能邏輯。
1)接口
- 傳入廣告位創(chuàng)建開屏視圖方法
- 允許app控制超時時間方法,SDK提供默認(rèn)值
- 控制背景色方法(百度不支持)
- 控制背景圖方法(百度不支持)
- 支持logo視圖方法
- 支持跳出按鈕的位置控制方法(百度不支持)
- 加載廣告方法
2)廣告獲取展示
- 客戶端請求廣告,SDK根據(jù)配置優(yōu)先級決定交給SSP還是廣點(diǎn)通處理。(并發(fā)也可能按需)
- 如是SSP處理,則請求SSP接口(需上傳參數(shù)確定),獲取廣告后,繪制視圖展示(需要單張圖),點(diǎn)擊跳轉(zhuǎn)支持deeplink、webview展示功能。
3)圖片、視頻的緩存
七、其他廣告類型設(shè)計
略過
八、SDK架構(gòu)圖
本文由 @相見恨晚 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
請問,能不能再寫一篇詳細(xì)一點(diǎn)的?或者能否推薦一下學(xué)習(xí)廣告SDK產(chǎn)品設(shè)計的書籍或者課程?
現(xiàn)在我司也在構(gòu)建自己的廣告系統(tǒng)
缺產(chǎn)品嗎?哈哈哈哈哈
我們這缺,聊一下?
app嗎,我司最近在尋找合適app進(jìn)行廣告投放合作
這里邊的幾個角色關(guān)系還需要再理一下,媒體應(yīng)該是在SSP平臺發(fā)布廣告位資源,SDK做的事情是從DSP或者第三方(穿山甲/優(yōu)量匯等)獲取廣告“放到”SSP平臺上的廣告位里在相應(yīng)的媒體位置展示
因?yàn)樽罱跇?gòu)建自有廣告系統(tǒng)(已上線),所以很認(rèn)真看了本文,作者寫得很詳細(xì),流程和實(shí)現(xiàn)也很完善。但我也有幾個疑問哈。
第一個疑問,是流程中的第二點(diǎn):
“(2)客戶端傳入廣告位從SDK獲取廣告,SDK根據(jù)流量配置獲取廣告返回(SSP、廣點(diǎn)通)?!?br /> 因?yàn)镾SP是供應(yīng)方平臺,也就是做媒體管理,而不是做廣告投放的。所以客戶端(媒體)應(yīng)該才是和SSP打交道的。因此我給改了下文字描述,不知是否正確:
“(2)客戶端從SSP獲取廣告位,并在觸發(fā)對應(yīng)廣告位時,把廣告位傳給廣告SDK。廣告SDK根據(jù)流量配置,從廣告后臺獲取對應(yīng)廣告位的廣告,并返回給客戶端(廣告后臺會對接DSP和直客、廣點(diǎn)通等,獲取廣告)?!?/p>
第二個疑問,是這段話,感覺沒有描述清楚。
“SDK在版本迭代中會去對接多個第三方廣告投放方(DSP,或者直投,或者廣點(diǎn)通等),也會增加各類廣告展示類型。為保證app升級SDK的無縫對接,需要對app端提供一致的接口設(shè)計,保證聚合SDK新增其他第三方和其他廣告類型時能完美支持?!?br /> 中間的這句“為保證app升級SDK的無縫對接”,我的理解,是不是指廣告SDK升級時,應(yīng)該盡量對已有APP造成的影響最低?所以這段話我修改一下:
“廣告SDK在版本迭代過程中,會持續(xù)對接多個第三方廣告投放方(DSP,或者直投,或者廣點(diǎn)通等),或增加更多的廣告展示類型。為保證APP對廣告SDK各個版本的無縫對接,需要對APP端提供一致的接口設(shè)計,以確保廣告SDK在升級過程中,即便新增了其他第三方廣告投放方或其他廣告類型,老的APP也能完美支持/兼容?!?/p>
第三個疑問,是“接口設(shè)計”的“初始化接口”部分。
“如果后臺不處理多方SDK的應(yīng)用ID兼容情況,則需要讓app傳入第三方SDK的應(yīng)用ID列表?!边@里的需求,是不是指為了實(shí)現(xiàn)激活與鑒權(quán),需要將本應(yīng)用的AppID,或者注冊開發(fā)者時生成的AppID,傳給接入的各家廣告SDK。
第四個疑問,是“開屏廣告功能設(shè)計”里的描述:“如果是SSP或者DSP,需要實(shí)現(xiàn)所有展示和功能邏輯?!?br /> 因?yàn)镈SP是廣告主關(guān)注的,而SDK其實(shí)并不關(guān)注這一塊,所以這里是不是應(yīng)該只有SSP,而沒有DSP。
你這個做的是自己公司產(chǎn)品的商業(yè)化嗎?把你們的流量位接入到穿山甲、廣點(diǎn)通等平臺,來實(shí)現(xiàn)流量變現(xiàn)?
不是接入到穿山甲、廣點(diǎn)通等平臺,而是完全自己構(gòu)建的商業(yè)化系統(tǒng)。因?yàn)槲覀兗扔辛髁?,也有廣告主,所以并不需要對接穿山甲等平臺
現(xiàn)在公司也在構(gòu)建商業(yè)化系統(tǒng),可以加微信相互溝通一下嘛
可以加個微信認(rèn)識一下嘛?
怎么聯(lián)系你?