廣告投放系統(tǒng):聚合廣告SDK與技術(shù)設(shè)計方案

12 評論 21766 瀏覽 144 收藏 7 分鐘

本文跟大家講講廣告投放系統(tǒng),看商業(yè)化廣告各方的協(xié)作流程是怎樣的,以及有什么樣的難點(diǎn),其中SDK的接口又是如何設(shè)計的?

一、商業(yè)化廣告各方協(xié)作流程

上游:

  1. 對接基礎(chǔ)服務(wù)端提供基礎(chǔ)服務(wù);
  2. 對接SSP、直投等等自有廣告資源;
  3. 對接第三方廣告SDK(廣點(diǎn)通、百度白青藤、頭條穿山甲)。

下游:

  1. 提供給集團(tuán)公司各個客戶端使用;
  2. 為大數(shù)據(jù)分析提供數(shù)據(jù)。

聚合廣告SDK 技術(shù)設(shè)計方案

二、廣告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è)計

  1. 初始化接口。如果后臺不處理多方SDK的應(yīng)用ID兼容情況。則需要讓app傳入第三方SDK的應(yīng)用ID列表??赏ㄟ^配置model傳入SDK。包含我們定義的app Id、第三方SDK注冊定義的應(yīng)用ID、以及其他公共參數(shù)。
  2. 各類廣告類型的廣告view或者實(shí)體接口,需要傳入廣告位ID。
  3. 加載廣告接口,加載成功的數(shù)據(jù)自動裝載該view。
  4. 各類事件回調(diào)接口。處理加載成功、加載失敗、曝光、關(guān)閉、點(diǎn)擊、廣告落地頁即將展示、即將關(guān)閉展示、已經(jīng)展示,已經(jīng)關(guān)閉等回調(diào)。(需要定制廣告投放系統(tǒng)聯(lián)系微信:136837241)

五、SDK的功能設(shè)計

(1)配置的獲取和版本緩存和更新支持。

  1. 帶版本號請求接口、app Id等信息請求配置,成功后緩存。
  2. 在app啟動和退出后臺、回到前臺均更新配置。

(2)數(shù)據(jù)獲取支持超時和重試。

超時時間根據(jù)配置控制、重試次數(shù)根據(jù)配置控制。

(3)數(shù)據(jù)打點(diǎn)上報

  1. SSP的點(diǎn)擊、曝光
  2. 上報到大數(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)配置及時更新

  1. 部分廣告類型需確保等待最新配置返回;
  2. 靜默推送更新app端配置。

六、開屏廣告功能設(shè)計

如果展示第三方SDK的廣告,扔給第三方處理即可。如果是SSP或者DSP,需要實(shí)現(xiàn)所有展示和功能邏輯。

1)接口

  1. 傳入廣告位創(chuàng)建開屏視圖方法
  2. 允許app控制超時時間方法,SDK提供默認(rèn)值
  3. 控制背景色方法(百度不支持)
  4. 控制背景圖方法(百度不支持)
  5. 支持logo視圖方法
  6. 支持跳出按鈕的位置控制方法(百度不支持)
  7. 加載廣告方法

2)廣告獲取展示

  1. 客戶端請求廣告,SDK根據(jù)配置優(yōu)先級決定交給SSP還是廣點(diǎn)通處理。(并發(fā)也可能按需)
  2. 如是SSP處理,則請求SSP接口(需上傳參數(shù)確定),獲取廣告后,繪制視圖展示(需要單張圖),點(diǎn)擊跳轉(zhuǎn)支持deeplink、webview展示功能。

3)圖片、視頻的緩存

七、其他廣告類型設(shè)計

略過

八、SDK架構(gòu)圖

聚合廣告SDK 技術(shù)設(shè)計方案

 

本文由 @相見恨晚 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 請問,能不能再寫一篇詳細(xì)一點(diǎn)的?或者能否推薦一下學(xué)習(xí)廣告SDK產(chǎn)品設(shè)計的書籍或者課程?

    來自浙江 回復(fù)
  2. 現(xiàn)在我司也在構(gòu)建自己的廣告系統(tǒng)

    回復(fù)
    1. 缺產(chǎn)品嗎?哈哈哈哈哈

      回復(fù)
    2. 我們這缺,聊一下?

      來自北京 回復(fù)
    3. app嗎,我司最近在尋找合適app進(jìn)行廣告投放合作

      來自安徽 回復(fù)
  3. 這里邊的幾個角色關(guān)系還需要再理一下,媒體應(yīng)該是在SSP平臺發(fā)布廣告位資源,SDK做的事情是從DSP或者第三方(穿山甲/優(yōu)量匯等)獲取廣告“放到”SSP平臺上的廣告位里在相應(yīng)的媒體位置展示

    來自江蘇 回復(fù)
  4. 因?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。

    來自北京 回復(fù)
    1. 你這個做的是自己公司產(chǎn)品的商業(yè)化嗎?把你們的流量位接入到穿山甲、廣點(diǎn)通等平臺,來實(shí)現(xiàn)流量變現(xiàn)?

      來自四川 回復(fù)
    2. 不是接入到穿山甲、廣點(diǎn)通等平臺,而是完全自己構(gòu)建的商業(yè)化系統(tǒng)。因?yàn)槲覀兗扔辛髁?,也有廣告主,所以并不需要對接穿山甲等平臺

      來自北京 回復(fù)
    3. 現(xiàn)在公司也在構(gòu)建商業(yè)化系統(tǒng),可以加微信相互溝通一下嘛

      來自北京 回復(fù)
    4. 可以加個微信認(rèn)識一下嘛?

      來自江蘇 回復(fù)
    5. 怎么聯(lián)系你?

      來自江蘇 回復(fù)