iOS 廣告SDK總結(jié)(二)

來源:簡書
作者:George_Luofz
時間:2020-12-09
2745
一個好的SDK應(yīng)該至少包含三部分:SDK庫,接入文檔,demo。

接上篇,廣告SDK設(shè)計(jì)

SDK接口設(shè)計(jì)

一個好的SDK應(yīng)該至少包含三部分:

SDK庫

接入文檔

demo

ia_4900000740.png

SDK對接文件目錄

1.API及注釋

根據(jù)之前的經(jīng)驗(yàn),API接口其實(shí)越簡單越好,最好的樣子就是一個初始化接口、一個調(diào)用接口和一個關(guān)閉接口,完事;調(diào)用方不想多花一秒鐘看你的API。

簡單合理;

如果一個方法能實(shí)現(xiàn),就不采用兩個方法;

方法參數(shù)盡量做到最少,若方法參數(shù)超過3個,則封裝成參數(shù)模型;SDK內(nèi)部可以獲取的,在內(nèi)部獲取就好

非必須實(shí)現(xiàn)的protocol,用optional關(guān)鍵字清晰標(biāo)注

內(nèi)部變量不暴露到外邊,若需要暴露,則readonly屬性

若有相似廣告形式,如直播貼片和視頻貼片功能幾乎一樣,分成兩個類單獨(dú)開發(fā)

盡量使用同步接口,不使用異步接口

記得提供一個版本號接口

命名規(guī)范

類名統(tǒng)一加平臺的前綴,方便開發(fā)者區(qū)分,例如YXAdSDKXXX類

采用駝峰命名,類名、方法名、字段名能清晰表明其用途

多個數(shù)值采用枚舉值

注釋詳細(xì)

清晰表明當(dāng)前方法調(diào)用線程、參數(shù)范圍、參數(shù)類型、默認(rèn)值等信息

必要內(nèi)部邏輯,告知開發(fā)者,如開屏請求,內(nèi)部保證在2s內(nèi)回調(diào),開發(fā)者無需再添加倒計(jì)時定時器

新版本新增接口、屬性等,加入對應(yīng)的版本標(biāo)識

可擴(kuò)展

接口設(shè)計(jì)應(yīng)該能考慮未來可預(yù)見變化,這也是區(qū)分水平的點(diǎn);如原生廣告請求參數(shù),多設(shè)計(jì)一個ext參數(shù),未來若有需要可以直接在此傳遞

回調(diào)protocol盡可能詳盡,最好能將UI整個過程開放出來;比如視頻貼片回調(diào),加入開始、當(dāng)前播放時長等回調(diào),若開發(fā)者臨時需要,也不必再改SDK

隱私性

SDK要有自我保護(hù)意識,就是說開發(fā)者不能改外部的一些參數(shù)、值之類,影響到SDK內(nèi)部邏輯。比如說,原生廣告會回調(diào)素材模型給開發(fā)者,在模型中不要加入上報url等字段,SDK內(nèi)部保留即可。

暴露給開發(fā)者的每個字段都是不得不暴露才暴露的,開發(fā)時候要深思熟慮

2.文檔

良好的文檔,會讓開發(fā)者對接很舒服,后期的麻煩也會更少。

文檔應(yīng)該至少包含以下幾部分,各大主流SDK基本也是這么做的:

一圖剩千言:

ia_4900000741.png

廣告SDK接入文檔目錄

3.demo

demo的作用是,讓開發(fā)者了解調(diào)用過程,降低學(xué)習(xí)成本;換句話說就是,方便其抄代碼。

做到將所有暴露的類及方法展現(xiàn)給開發(fā)者,有時候要加一些特殊情況的實(shí)現(xiàn),給開發(fā)者提供一些便利。

SDK架構(gòu)設(shè)計(jì)

外部良好的接口+內(nèi)部優(yōu)良的設(shè)計(jì)就是一套好的SDK了

SDK的架構(gòu)跟App的架構(gòu)差不太多,其實(shí)都是MVC的變體,只不過SDK沒有C,所以要有個其他的容器處理UI與數(shù)據(jù)交互邏輯。

按層級分,可以由上到下分為:API層->service層->module層

API層,提供開發(fā)者調(diào)用接口,內(nèi)部調(diào)用service層,封裝部分邏輯、數(shù)據(jù)等

service層,業(yè)務(wù)層,調(diào)用module層功能塊,組合數(shù)據(jù),創(chuàng)建UI、處理業(yè)務(wù)邏輯等,是SDK核心層級

module層,底層功能塊,一般有

network(client)

cache(模型緩存、圖片視頻緩存、上報信息緩存等)

utils(提供)

dataCenter(提供全局配置信息、機(jī)型信息、沙盒目錄等等)

logger(提供日志、上報服務(wù))

library(reachiablity、encode/decode、一些擴(kuò)展)

關(guān)于架構(gòu)的個人感受

最開始的底層模塊要設(shè)計(jì)好,如果不好就重構(gòu)

特別是模塊與模塊之間的接口部分,多為上層考慮,這里是考驗(yàn)經(jīng)驗(yàn)水平的地,只懂理論不行

立即登錄,閱讀全文
原文鏈接:點(diǎn)擊前往 >
文章來源:簡書
版權(quán)說明:本文內(nèi)容來自于簡書,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼關(guān)注
獲取更多出海資訊的相關(guān)信息
優(yōu)質(zhì)服務(wù)商推薦
更多