iOS 廣告SDK總結(一)

來源:簡書
作者:George_Luofz
時間:2020-12-09
2854
總結一下業(yè)務、SDK等相關的東西,分成業(yè)務和技術兩塊。

廣告業(yè)務

個人感受

必不可少。當一個公司產品發(fā)展成熟之后或者用戶量達到一定級別,比如百萬級以上,就開始考慮商業(yè)化或者叫流量變現(xiàn),隨之廣告業(yè)務就要開展了,據(jù)統(tǒng)計互聯(lián)網(wǎng)行業(yè)中一半以上的收入來自于廣告,想想也確實如此,像BAT都有自己的廣告平臺,百度鳳巢、騰訊廣點通等等,其中百度廣告業(yè)務占總收入的90%以上(2015年),可見一斑。

價值巨大。最開始是誤打誤撞進入廣告行業(yè),第一家公司主要是學習技術、積累經驗,后來看到廣告對于公司的巨大價值,才想繼續(xù)在這個業(yè)務深耕,希望在這個方向有深遠的發(fā)展,同時路也能越走越寬。

大平臺更掙錢,小公司基本就是在夾縫中生存,但如果傍上大公司的大腿,也可以活得很滋潤,目前服務過三家公司,都有移動廣告平臺業(yè)務,各自的側重點不同

微信圖片_20201209111239.png

SDK工程師應該是技術和售后的混合體,既能寫得好代碼,又能跟開發(fā)者、運營妹子、市場大哥等第三方群體良好的溝通,有時候這比寫好代碼更重要

需要有快速學習的能力,能夠對產品的需求快速驗證,這點兒也很有必要

廣告類型

目前大致做過十來種廣告形式,可分為數(shù)據(jù)類和UI展示類

微信圖片_20201209111243.png

廣告SDK業(yè)務

對于移動端或者整個大前端來說,廣告業(yè)務主要展現(xiàn)形式就是SDK。

SDK主要是做數(shù)據(jù)處理,包括但不限于數(shù)據(jù)請求、數(shù)據(jù)處理(格式化檢驗、異常處理)、數(shù)據(jù)上報等

具體廣告形式邏輯介紹:

微信圖片_20201209111246.png

廣告SDK設計

廣告SDK設計原則

廣告SDK涉及技術并不復雜,從之前的經驗來看,更應該關注設計,應該說設計是第一位的。

大的原則

穩(wěn)定性第一

不能崩潰。由于SDK需要寄生在宿主App中才能運行,SDK若崩潰,會導致App不能運行,所以最重要的一點是不能崩潰,應該采取各種辦法防止崩潰;經歷過線上大面積崩潰的血的教訓,這一點兒印象深刻。

應對各種奇葩調用。由于開發(fā)者無暇看文檔,并且認為SDK是完美無暇的,所以可能會出現(xiàn)各種奇葩的調用,比如參數(shù)類型錯誤,在新開的子線程調用等問題,若考慮不周,遇到問題會很棘手

應對各種系統(tǒng)、各種手機。手機種類越來越多,iOS系統(tǒng)版本越來越新,特別是做UI渲染時要考慮好版本、機型適配

接口穩(wěn)定。穩(wěn)定回調、數(shù)據(jù)格式不發(fā)生變化等

內部應對服務器端各種變化。由于要從服務器端獲取數(shù)據(jù)以及上報等,比如會出現(xiàn)服務器端數(shù)據(jù)類型變化,為null等情況,SDK要能穩(wěn)定應對

可擴展性

考慮變化。由于SDK更新迭代較慢,所以穩(wěn)定版本要能良好運行,充分考慮到接口可能發(fā)生的變化,內部功能的變化等,做到改動小、效果好;比如原生廣告配置參數(shù)可能會增加、素材數(shù)據(jù)也可能會增加等問題

無侵入

不能影響宿主App功能。SDK對于宿主App的依賴應該足夠小,如不能跟宿主App起相同的類名、使用相同的擴展、依賴相同的第三方庫等

不會導致宿主App卡頓。內部所有操作應該盡可能放在自定義子線程中

不能使用第三方庫。盡可能情況下一個第三方庫也不能使用,若使用(如Webp.framework、微信分享)由開發(fā)者添加

核心問題

如何防崩潰?

嚴格做好傳遞參數(shù)校驗,若校驗失敗,則直接回調error;包括請求參數(shù)、服務端響應參數(shù)等

內部用好try{}catch{}

注冊unCaughtExceptionHandler(),發(fā)現(xiàn)崩潰及時上報

及時上報異常、error等信息,盡早發(fā)現(xiàn)問題

不使用高版本API

避免在子線程處理UI

版本適配?

重點關注iOS8之后每個版本新框架以及API更新,就可以較好避免此問題

(此處以后單開一篇文章總結)

各版本新功能

微信圖片_20201209111249.png

設備標識符變化:iOS 6之前使用UDID->iOS6時IDFA發(fā)布,依然可以使用UDID->后來在iOS 7發(fā)布之前禁止UDID,可以使用和Mac->iOS 7禁止OpenUDID和Mac,只能使用IDFA->iOS 10+IDFA可以手動禁止獲取(此時一般返回默認0000,也可以使用IDFA模擬值)

iOS 7+使用NSUrlSession網(wǎng)絡庫,及后臺下載功能

iOS 8+使用WKWebView

IOS 9+HTTP處理,支持BitCode

iOS 10 openUrl方法

穩(wěn)定回調?

所有的回調都在主線程

設置好超時周期,在請求超時或者API指定的時間內超時,都及時回調

廣告SDK代碼設計

目標是接口規(guī)范、注釋清楚、使用簡單無異議。大致可分為接口設計和架構設計兩塊兒:

接口主要包含API及注釋、文檔、demo

架構包含設備信息、網(wǎng)絡、緩存、線程通信等核心模塊。

立即登錄,閱讀全文
原文鏈接:點擊前往 >
文章來源:簡書
版權說明:本文內容來自于簡書,本站不擁有所有權,不承擔相關法律責任。文章內容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼關注
獲取更多出海資訊的相關信息
優(yōu)質服務商推薦
更多
掃碼登錄
打開掃一掃, 關注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家