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

12 評(píng)論 23251 瀏覽 147 收藏 7 分鐘

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

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

上游:

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

下游:

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

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

二、廣告SDK工作流程

(1)客戶(hù)端初始化SDK,SDK初始化并獲取配置(基本配置(默認(rèn)),流量控制配置等)。

(2)客戶(hù)端傳入廣告位從SDK獲取廣告,SDK根據(jù)流量配置獲取廣告返回(SSP、廣點(diǎn)通)。

(3)客戶(hù)端負(fù)責(zé)展示廣告,SDK上報(bào)曝光和點(diǎn)擊等統(tǒng)計(jì)事件,同時(shí)也給客戶(hù)端回調(diào)接口。

(4)處理失敗打點(diǎn)數(shù)據(jù),緩存和上報(bào)。

三、難點(diǎn)

(1)版本兼容

其中包括SDK自身配置和數(shù)據(jù)庫(kù)緩存的的版本兼容,其實(shí)更重要的是對(duì)客戶(hù)端接口的版本兼容。SDK在版本迭代中會(huì)去對(duì)接多個(gè)第三方廣告投放方,也會(huì)增加各類(lèi)廣告展示類(lèi)型,為保證app升級(jí)SDK的無(wú)縫對(duì)接,需要對(duì)app端提供一致的接口設(shè)計(jì),保證聚合SDK新增其他第三方和其他廣告類(lèi)型時(shí)能完美支持。

(2)數(shù)據(jù)準(zhǔn)確性

廣告的打點(diǎn)數(shù)據(jù)是結(jié)算的重要依據(jù),需保證上報(bào)的數(shù)據(jù)的準(zhǔn)確性,不丟失,且可靠。這里設(shè)計(jì)到一系列的優(yōu)化項(xiàng),對(duì)廣告數(shù)據(jù)獲取的成功率提升,對(duì)廣告展示、點(diǎn)擊的數(shù)據(jù)準(zhǔn)確性保證的技術(shù)運(yùn)用,同時(shí)提供監(jiān)測(cè)手段的手段運(yùn)用。

(3)SDK的健壯性要求

尤其處理廣告請(qǐng)求并發(fā),數(shù)據(jù)打點(diǎn)并發(fā)的情況下的線(xiàn)程安全問(wèn)題。

(4)SDK的其他性能指標(biāo)的關(guān)注

執(zhí)行時(shí)間、內(nèi)存、cpu、無(wú)crash。特殊廣告類(lèi)型,如開(kāi)屏廣告的性能要求。展示流暢,加載需要控制在1-3s內(nèi)。

四、SDK的接口設(shè)計(jì)

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

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

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

  1. 帶版本號(hào)請(qǐng)求接口、app Id等信息請(qǐng)求配置,成功后緩存。
  2. 在app啟動(dòng)和退出后臺(tái)、回到前臺(tái)均更新配置。

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

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

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

  1. SSP的點(diǎn)擊、曝光
  2. 上報(bào)到大數(shù)據(jù)所有事件

(4)失敗打點(diǎn)數(shù)據(jù)的緩存和上報(bào)處理

  • 失敗的打點(diǎn)需緩存到本地?cái)?shù)據(jù)庫(kù),再定時(shí)上報(bào)。
  • 定時(shí)間隔由服務(wù)器控制,默認(rèn)值60s。
  • 無(wú)網(wǎng)絡(luò)不上報(bào)。
  • 上報(bào)成功后刪除本地緩存數(shù)據(jù)。
  • 失敗繼續(xù)上報(bào),每個(gè)緩存數(shù)據(jù)重試若干次后舍棄。重試次數(shù)由配置控制,默認(rèn)3次。

(5)流量控制功能支持

SSP、第三方SDK分流控制。根據(jù)配置,按優(yōu)先級(jí)去分配。

(6)配置及時(shí)更新

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

六、開(kāi)屏廣告功能設(shè)計(jì)

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

1)接口

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

2)廣告獲取展示

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

3)圖片、視頻的緩存

七、其他廣告類(lèi)型設(shè)計(jì)

略過(guò)

八、SDK架構(gòu)圖

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

 

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

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

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

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

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

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

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

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

    來(lái)自江蘇 回復(fù)
  4. 因?yàn)樽罱跇?gòu)建自有廣告系統(tǒng)(已上線(xiàn)),所以很認(rèn)真看了本文,作者寫(xiě)得很詳細(xì),流程和實(shí)現(xiàn)也很完善。但我也有幾個(gè)疑問(wèn)哈。
    第一個(gè)疑問(wèn),是流程中的第二點(diǎn):
    “(2)客戶(hù)端傳入廣告位從SDK獲取廣告,SDK根據(jù)流量配置獲取廣告返回(SSP、廣點(diǎn)通)?!?br /> 因?yàn)镾SP是供應(yīng)方平臺(tái),也就是做媒體管理,而不是做廣告投放的。所以客戶(hù)端(媒體)應(yīng)該才是和SSP打交道的。因此我給改了下文字描述,不知是否正確:
    “(2)客戶(hù)端從SSP獲取廣告位,并在觸發(fā)對(duì)應(yīng)廣告位時(shí),把廣告位傳給廣告SDK。廣告SDK根據(jù)流量配置,從廣告后臺(tái)獲取對(duì)應(yīng)廣告位的廣告,并返回給客戶(hù)端(廣告后臺(tái)會(huì)對(duì)接DSP和直客、廣點(diǎn)通等,獲取廣告)?!?/p>

    第二個(gè)疑問(wèn),是這段話(huà),感覺(jué)沒(méi)有描述清楚。
    “SDK在版本迭代中會(huì)去對(duì)接多個(gè)第三方廣告投放方(DSP,或者直投,或者廣點(diǎn)通等),也會(huì)增加各類(lèi)廣告展示類(lèi)型。為保證app升級(jí)SDK的無(wú)縫對(duì)接,需要對(duì)app端提供一致的接口設(shè)計(jì),保證聚合SDK新增其他第三方和其他廣告類(lèi)型時(shí)能完美支持。”
    中間的這句“為保證app升級(jí)SDK的無(wú)縫對(duì)接”,我的理解,是不是指廣告SDK升級(jí)時(shí),應(yīng)該盡量對(duì)已有APP造成的影響最低?所以這段話(huà)我修改一下:
    “廣告SDK在版本迭代過(guò)程中,會(huì)持續(xù)對(duì)接多個(gè)第三方廣告投放方(DSP,或者直投,或者廣點(diǎn)通等),或增加更多的廣告展示類(lèi)型。為保證APP對(duì)廣告SDK各個(gè)版本的無(wú)縫對(duì)接,需要對(duì)APP端提供一致的接口設(shè)計(jì),以確保廣告SDK在升級(jí)過(guò)程中,即便新增了其他第三方廣告投放方或其他廣告類(lèi)型,老的APP也能完美支持/兼容。”

    第三個(gè)疑問(wèn),是“接口設(shè)計(jì)”的“初始化接口”部分。
    “如果后臺(tái)不處理多方SDK的應(yīng)用ID兼容情況,則需要讓app傳入第三方SDK的應(yīng)用ID列表?!边@里的需求,是不是指為了實(shí)現(xiàn)激活與鑒權(quán),需要將本應(yīng)用的AppID,或者注冊(cè)開(kāi)發(fā)者時(shí)生成的AppID,傳給接入的各家廣告SDK。

    第四個(gè)疑問(wèn),是“開(kāi)屏廣告功能設(shè)計(jì)”里的描述:“如果是SSP或者DSP,需要實(shí)現(xiàn)所有展示和功能邏輯?!?br /> 因?yàn)镈SP是廣告主關(guān)注的,而SDK其實(shí)并不關(guān)注這一塊,所以這里是不是應(yīng)該只有SSP,而沒(méi)有DSP。

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

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

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

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

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

      來(lái)自江蘇 回復(fù)