• <legend id="61os6"></legend>

      <sub id="61os6"></sub>

          <ol id="61os6"><output id="61os6"></output></ol>
        1. <span id="61os6"></span>

          2020-2-7 11:21

          SDK和API的區別和特點

          隨著企業營銷數字化轉型腳步越來越快,SDKAPI也會被使用的越來越多。


          但這會對于那些非技術出身的同學造成十分大的苦惱。

          這些都是什么鬼呀?都有啥區別和特點呢?
          今天就讓我們用大白話來聊聊看。

          01

          概念定義



          我們先看一下有關APISDK的概念定義



          應用程序接口API
          大家可能經常在企業數字化建設過程中聽到API這個詞,可能對于非技術出身的同學,不是很好理解。打個通俗比方,可簡單理解為,API就是數字世界、軟件世界里的插頭。
          應用程序接口(Application Program Interface (API))就是連接各種軟件系統,為了能在各系統之間共享數據而開放的技術接口管道。API主要是針對數字產品和服務的,其目的是為了能讓兩個要通訊和共享數據的系統平臺,按雙方都認可、認為合理、有意義、可理解的方式,發送和接收彼此的信息。
          有許多使用API的場景,舉個常見的例子:營銷人員會希望將Web和移動App分析的數據,都推到數據可視化平臺中,以圖形化方式展示出來,這就需要使用API接口,接入這些數據。
           
          SDK軟件開發工具包
          SDKSoftware DevelopmentKit)是指系統為了便于別的系統對接他們的API,而提供的一系列軟件開發工具包,甚至軟件開發測試環境等等的總稱。
           
          聽到這里,可能大家會更暈了。
           
          下面不妨我們打個比方來進行說明。
           

          02

          打個比方


           
          還是拿“軟件世界里的插頭”這個比喻來舉例子吧:
          既然是插頭,那首先要有接口協議對吧,例如電源插頭是220V還是110V的。有過國外旅游經歷的同學想必應該有感受的,國外很多國家的插頭制式規格同國內不同,需提前準備好轉換適配裝置,國內制式的插頭才能使用。如下圖所示:





          所以我們可以將API接口協議理解為這種規格制式,然而僅有制式規范還不夠。一般插頭都是配對搭配使用的對吧?而API大家可以簡單理解為,是在這組配對組合中僅有單件是現成的(如僅有插座缺插頭),即僅有一方(插頭一方或插座一方)提供了現成可用的物品。如一方已提供插座,就需要另一方按接口協議規格制式去研發插頭,然后才能將插頭與插座很好的配合使用。這個插頭-插座的連接配合,就是API對接。
           
          試想,若是從頭研發插頭,那么跟插座適配肯定需要一個聯調適配的過程,從不上電的物理接口適配,到上電后的工作狀態,甚至異常電流、溫度、濕度等特殊安全情況下,都需要測試以確保萬無一失。
           
          可見這個過程若研發插頭的工作由原研制插座的團隊來完成,肯定效率會非常高的,因為他們在生產插座時,為了測試,肯定已經有了插頭最起碼的可用交付物。自然再進一步大家就能聯想出:他們還可以提供一整套的現成可直接工作可用的插頭的成品/半成品(甚至便于測試測量的工具等),提供給到那些需要對接到該插座的廠商們。這樣這些廠商們就不需要再重復研發插頭了。這個現成的插頭的成品/半成品就是我們常說的SDK。
           
          講到這里,大家應該對APISDK的區別有個大體的了解了吧?
           
          快速小結一下:
          1.兩系統對接的接口通訊協議是基礎;
          2.在此之上是對接雙方基于接口通訊協議實現的發送和接受的一組API接口程序;
          3.某一方為了便于技術對接,直接提供了已包裹API接口程序的可直接工作的SDK軟件包,便于對方直接使用,降低重復開發成本。
           
          當然這套SDK需要能滿足對方軟件的不同工作環境的需要,例如:有Android系統App中集成的SDK,ObjectCApp中集成的SDK,Java版的、Python版的等。
           
           

          03

          廣告流量分發場景



          好,講到這里,對基本概念說完了,大家肯定很多問題就會出來了。
           
          如:這位同學問的那樣:

           今天在重新看你的書溫習一些概念,你書里有講到“sdk的話媒體會喪失對流量的控制權,所以一般都prefer api”。我自己也查了一下,api經常接觸也有用到,就是數據/指令傳輸的接口,約定了可以傳什么東西、返回什么東西。但我還比較模糊的是,sdk和api對于媒體來說本質的區別是什么,為什么說用sdk喪失對流量的控制權?
           
          是的,大家可以再回味回味上面的那段插頭插座的故事,若可工作的插頭模塊也是我插座團隊提供的,外部使用者僅僅做個簡單的包裝,將線接到插頭,那么是否意味著存在如下幾點:
          1.插頭這一方對插頭內部已失去控制權,想在提供數據時做點手腳的成本就會加大。不是說不能做手腳,而是成本會加大,若原來插頭是自己實現的話,在插頭里做手腳就行了,而現在需要把做手腳的動作往前移,會從接口模塊,前移到那些可能涉及業務系統的部分改造。所以可見SDK的方式會增加一定造假成本。但不是說SDK模式一定無法造假。
           
          2.對于SDK模式,插座插頭都是一家生產的,那么在生產的插頭中植入一些探測器,用來收集外部其他軟件系統的一些數據是可能的。甚至若SDKUI交互展示部分的功能,額外加入一些后門也都是可能的。那么作為使用SDK這一方,SDK對他而言就是黑盒子,就存在很多不可控的風險。
           
          3.當然提升信任,有一種做法是提供接口源代碼參考,由使用方檢查,并由使用方自行編譯為可工作的二進制程序,在自己的系統中使用。這種模式其實還是API模式,因為使用方還是可以對代碼進行修改,加入一些達到自己利益的動作。
           
          對于第3點,有同學會說,我可以提供同時提供保持一致的二進制的SDK和源代碼,這就沒問題了吧?但畢竟是黑盒子,對使用方而言還是不知道你的代碼都做了啥。
           
          所以回答上面那位同學的問題:
          先要強調,背景是說的廣告流量對接場景,且偏媒體立場的。
           
          若我是媒體需要將流量對接到廣告平臺中,不論是對接給SSP、網盟,還是廣告主的Adserving平臺,我優先肯定希望我自己能有絕對的控制權,希望優先以API的方式進行對接。因為我想做什么手腳的話,相對成本低一些。
           
          但若我的立場是SSP、網盟收流量的,或我是廣告主Adserving,我當然希望能SDK方式接入流量,這樣我能多采集些數據,提高靈活性(我想升級或調整一些接口策略的話,只要SDK足夠兼容,完全可以不用通知對方的),最重要一點是因為我可以通過SDK采集一些數據來校驗對方做手腳的情況。從而增加對方做手腳的成本。
           
          所以對一個問題,我們需要首先確定立場,是站在哪一方的視角來回答的,可能答案會完全不同。
           


          04

          廣告監測場景



          上面提到的是廣告流量分發的場景,下面讓我們來看一下廣告監測的場景。
           
          實操過項目廣告執行的同學肯定經常聽到過API監測、SDK監測代碼之類的。在看本文前可能有些同學會是一頭霧水,很懵圈的吧。
           
          通過上面的白話解釋,應該能有一些理解了吧。
           
          API對接方式,就是媒體方按接口協議規范約定,將監測方需要的參數,在自己的軟件系統中組裝好,在產生廣告曝光或點擊時,給監測方服務端發送請求。
           
          例如:下面這段監測代碼中,有非常多的參數需要傳遞,如設備ID等。

          http://tracking.com/x/k=&p=dx=__IPDX__&rt=2&ns=__IP__&ni=__IESID__&v=__LOC__&xa=__ADPLATFORM__&tr=__REQUESTID__&vg=__AUTOPLAY__&nh=__AUTOREFRESH__&mo=__OS__&m0=__OPENUDID__&m0a=__DUID__&m1=__ANDROIDID1__&m1a=__ANDROIDID__&m2=__IMEI__&m4=__AAID__&m5=__IDFA__&m6=__MAC1__&m6a=__MAC__&m11=__OAID__&nd=__DRA__&np=__POS__&nn=__APP__&nc=__VID__&nf=__FLL__&ne=__SLL__&ng=__CTREF__&txp=__TXP__&tr2=__REQUESTID2__&o=
           
          SDK對接方式,媒體方要做的,是首先在媒體的軟件中集成該SDK軟件包,在產生廣告曝光或點擊時,媒體按規范調用SDK軟件包中的函數,傳入一些參數,以此啟動SDK去執行SDK中的軟件程序,給監測方服務器發送請求。SDK模式下,就算有些數據媒體方沒有傳,或故意傳錯了,SDK自己可能也可以去采集到,例如設備ID等。
           
          所以這也能回答另外一個曾經同學們問我的疑問:為什么有說法:

           對曝光監測而言,API監測代碼可以認為同SDK監測代碼從統計出數來看沒什么區別”?
           
          再說個之前有個同學跟我聊過的一個她們排查了很久才發現問題的故事:也是監測API技術對接的場景,媒體方自主編程開發的API對接程序。但是網絡連接部分的軟件是媒體的開發人員按自己的喜好,選用的網上某個現成httpclient包。而這種情況下,可能給監測方服務器發送的UserAgent,可能不通過監測方的合規性檢查,監測方會過濾掉這些數據,導致媒體方同監測方產生較大的數據誤差。
           
          當然對上面這個故事,若換成SDK模式對接的話,SDK中對監測方服務端發送請求的代碼監測方自己會驗證過的,可能這種數據誤差的問題出現的就會比較少了。



          -END-


          本文轉載自網絡,如作者對轉載有疑問可以聯系我們刪除文章。


          上一篇: 沒有了 下一篇: 2019年我國互聯網廣告總收入約...
          无码亚洲一本AA午夜在线,国产欧美亚洲精品第1页青草,巴西肥女毛茸茸BBW