




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、SDK無埋點(diǎn)技術(shù)介紹技術(shù)創(chuàng)新,變革未來SDK無埋點(diǎn)技術(shù)簡介SDK無埋點(diǎn)技術(shù)如何實(shí)現(xiàn)實(shí)踐中遇到的坑和解決方法目錄01 SDK無埋點(diǎn)技術(shù)簡介無埋點(diǎn)解決什么問題?解決代碼埋點(diǎn)本身成本過高,可視化操作,更容易 上手;把核心代碼和配置進(jìn)行分離;不懂代碼的人也可以通過后臺(tái)配置錨點(diǎn)并實(shí)時(shí)下發(fā) 到客戶端生效;避免代碼寫死,需要更新版本才能生效的笨拙方式。 變得更為主動(dòng)靈活高效;什么是埋點(diǎn)?第三階段數(shù)據(jù)建模統(tǒng)計(jì)第四階段數(shù)據(jù)展示第二階段數(shù)據(jù)存儲(chǔ)數(shù)據(jù)采集第一階段所謂埋點(diǎn)就是通過在代碼的關(guān)鍵部位 植入統(tǒng)計(jì)代碼,追蹤用戶的行為埋點(diǎn)長啥樣?一段埋點(diǎn)代碼埋點(diǎn)過程中的痛點(diǎn)需要開發(fā)寫代碼、熟悉api、容易錯(cuò)埋漏埋;修改需要重新
2、編譯 打包,更新代價(jià)大擴(kuò)展性靈活性差,增 加功能就得再次埋點(diǎn)無埋點(diǎn)又是什么噱頭可視化可視化埋點(diǎn)操作,運(yùn)營 和實(shí)施人員就可以完成配置即代碼靈活、可擴(kuò)展埋點(diǎn)功能由配置控制Codeless 開發(fā)人員只需要集成 幾行初始化代碼即可熱更新修改、添加方便,無需重新 編譯打包,效率高,成本低無埋點(diǎn)長啥樣?無埋點(diǎn)長啥樣?埋點(diǎn)vs無埋點(diǎn)u 無埋點(diǎn)解決了埋點(diǎn)的部分痛點(diǎn)u 無埋點(diǎn)是一種自然的進(jìn)化,方便客戶 集成,操作可視化u 無埋點(diǎn)也有自己的一些問題,例如 無法傳遞一些復(fù)雜的信息,只能捕獲 一些簡單的點(diǎn)擊和文字變化事件行為u 兩者不是對(duì)立的,相輔相成,各有各 的使用場(chǎng)景02 SDK無埋點(diǎn)技術(shù)如何實(shí)現(xiàn)整體架構(gòu)圖Web
3、配置頁面SDK通信服務(wù)器配置服務(wù)器探頭服務(wù)KafkaLoader/Format erMongoDBHDFS/HiveHbase傳輸協(xié)議基于TCP層的長連接因?yàn)镾DK和配置后臺(tái)都需要和通信服務(wù)器進(jìn)行雙向交互。這種情況用http協(xié) 議就無法滿足雙向交互和實(shí)時(shí)反饋的需求;而且http輪詢也耗費(fèi)性能;所以 最終SDK 跟服務(wù)端使用socket 建立長連接, 配置Web 端跟服務(wù)器使用 websocket建立長連接傳輸?shù)臄?shù)據(jù)使用json格式,數(shù)據(jù)量小而且便于解析傳輸?shù)倪^程中跟服務(wù)端約定秘鑰,使用對(duì)稱加密算法對(duì)內(nèi)容進(jìn)行加密, 同時(shí)也采用壓縮算法盡可能減小傳輸?shù)臄?shù)據(jù)量如何觸發(fā)無埋點(diǎn)配置通過手勢(shì)搖一搖觸發(fā)發(fā)通
4、過手勢(shì)搖一搖來觸發(fā),結(jié)合震動(dòng)給用戶反饋, 這種不需要界面交互,剛好可以滿足需求最終我們選擇的也是這種方式SDK是內(nèi)嵌在App內(nèi),沒有任何和用戶交互的界面通過第三方程序觸發(fā)?例如通過手機(jī)掃描一個(gè)二維碼,然后二維碼里包含 一個(gè)特殊的UrlSchemal和參數(shù)來觸發(fā)app內(nèi)的SDKapp界面如何傳輸?shù)脚渲庙撁嫱ㄟ^一些遠(yuǎn)程桌面協(xié)議例如VNC協(xié)議來進(jìn)行傳輸?SDK截取頁面屏幕,每隔一段時(shí)間傳遞給服務(wù)端VNC協(xié)議的優(yōu)勢(shì)在于傳遞速度快,但是協(xié)議比較復(fù)雜,而且需要在SDK內(nèi)實(shí)現(xiàn)VNC的服務(wù)端,不太現(xiàn)實(shí),舍棄這種方案這種方案相對(duì)比較簡單,易于實(shí)現(xiàn)。只需要把截圖數(shù)據(jù)進(jìn)行base64之后傳遞給服務(wù)端即可,主要是關(guān)注
5、截圖和傳輸?shù)膬?yōu)化即可屏幕截圖的關(guān)鍵代碼Android關(guān)鍵代碼:iOS關(guān)鍵代碼:控件信息獲取及ID生成技術(shù)首先是安卓1獲取時(shí)機(jī)主要是監(jiān)控所有activity的生命周期回調(diào),在onResume里觸發(fā),主要是實(shí)現(xiàn) 了系統(tǒng)的ActivityLifecycleCallbacks接口2獲取控件的哪些信息因?yàn)楹笈_(tái)配置頁面要在截圖上繪制每個(gè)組件的坐標(biāo)并框選出來,所以需要獲取控件的坐標(biāo)x,y還有width和height,同時(shí)還要獲取控件是否可 見以及透明度等有用的信息3如何生成控件的唯一ID主要是根據(jù)一個(gè)控件不變的屬性組合來生成,例如控件的類名、tag,當(dāng)前 activity的包名,控件位于整個(gè)view tre
6、e的路徑等信息組合起來然后做一個(gè)md5控件信息獲取及ID生成技術(shù)首先是安卓1獲取時(shí)機(jī)主要是監(jiān)控所有activity的生命周期回調(diào),在onResume里觸發(fā),主要是實(shí)現(xiàn) 了系統(tǒng)的ActivityLifecycleCallbacks接口控件信息獲取及ID生成技術(shù)首先是安卓2獲取控件的哪些信息因?yàn)楹笈_(tái)配置頁面要在截圖上繪制每個(gè)組件的坐標(biāo)并框選出來,所以需要獲取控件的坐標(biāo)x,y還有width 和height,同時(shí)還要獲取控件是否可見 以及透明度等有用的信息控件信息獲取及ID生成技術(shù)首先是安卓主要是根據(jù)一個(gè)控件不 變的屬性組合來生成, 例如控件的類名、tag, 當(dāng)前activity的包名,控 件位于整個(gè)
7、view tree的 路徑等信息組合起來然 后做一個(gè)md53如何生成控 件的唯一ID控件信息獲取及ID生成技術(shù)然后是 ios1獲取時(shí)機(jī)主要是hook所有的viewcontroller的viewDidAppear函數(shù),利用ios的運(yùn)行時(shí) 使用method swizzling技術(shù)攔截系統(tǒng)函數(shù),替換為自己的函數(shù)實(shí)現(xiàn)2獲取控件的哪些信息這塊和android的差不多,主要是控件的坐標(biāo)x,y還有width和height, 同時(shí)還要獲取控件是否可見以及透明度等有用的信息3如何生成控件的唯一ID主要是根據(jù)一個(gè)控件不變的屬性組合來生成,例如控件的類名, 當(dāng)前viewcontroller的類名,控件的點(diǎn)擊事件名s
8、elctor,控件位于整個(gè)view tree的路徑等信息組合起來然后做一個(gè)md5控件信息獲取及ID生成技術(shù)然后是 ios1獲取時(shí)機(jī)主要是hook所有的viewcontroller的viewDidAppear函數(shù),利用ios的運(yùn)行時(shí) 使用method swizzling技術(shù)攔截系統(tǒng)函數(shù),替換為自己的函數(shù)實(shí)現(xiàn)2獲取控件的哪些信息這塊和android的差不多,主要是控件的坐標(biāo)x,y還有width和height, 同時(shí)還要獲取控件是否可見以及透明度等有用的信息控件信息獲取及ID生成技術(shù)然后是 ios3如何生成控件的唯一ID主要是根據(jù)一個(gè)控件不變的屬性組合來生成,例如控件的類名, 當(dāng)前viewcontr
9、oller的類名,控件的點(diǎn)擊事件名selctor,控件位于整個(gè)view tree的路徑等信息組合起來然后做一個(gè)md5控件信息獲取及ID生成技術(shù)然后是 ios動(dòng)態(tài)綁定控件事件 (Android)主要是可利用Android中View 的sendAccessibilityEvent(int eventType)方法來實(shí)現(xiàn)事件觸發(fā)的;只要設(shè)置了代理就可以對(duì)具 備Accessibility能力的view 實(shí)現(xiàn)點(diǎn)擊事件的響應(yīng)。 View.AccessibilityDelegate具體說明請(qǐng)參考Android 的開發(fā)者文檔。動(dòng)態(tài)綁定控件事件(ios)ios主要遍歷當(dāng)前界面所有的控件,并根據(jù)配置信息篩選需要綁
10、定的控件,然后通過methodswizzling 的技術(shù)替換控件的點(diǎn)擊事件來達(dá)到綁定控件的事件;03 實(shí)踐中遇到的坑和解決方法長連接斷開的問題解決方法:這是使用長連接經(jīng)常遇到的一 個(gè)問題,處理方法就是要有一 個(gè)簡單的心跳機(jī)制,來?;铈?路,防止因長時(shí)間沒有數(shù)據(jù)流 動(dòng)被防火墻或者網(wǎng)關(guān)殺掉問題:鏈路如果長時(shí)間沒有數(shù)據(jù)通信就會(huì)斷開并且服務(wù)端和客戶端也沒有及時(shí)的回調(diào)通知?搖一搖遇到的問題問題:搖一搖觸發(fā)成功如何給用戶反饋?以及用 戶有時(shí)候運(yùn)動(dòng)中的搖一搖誤觸發(fā)怎么解決?解決方法:搖一搖觸發(fā)成功連上服務(wù)器后可以用震 動(dòng)的形式給用戶反饋,以反饋給用戶,用戶就不用 一直搖來搖去;防止誤觸發(fā)主要是通過服務(wù)端返回
11、一個(gè)消息通知成功后才給用戶以震動(dòng)的提示,然后開始傳輸截屏和 控件的信息到服務(wù)器;這樣就不會(huì)走著走著手機(jī)突 然就震動(dòng)了;問題:ios如何能在所有界面都能監(jiān)聽的搖一搖事件解決方法:這個(gè)主要是利用ios的運(yùn)行時(shí)的一些技術(shù),攔截到系統(tǒng)的 rootViewController,然后動(dòng)態(tài)的給注入一個(gè)搖一搖的監(jiān)聽方法,這 樣就能在所有的界面監(jiān)聽搖一搖的事件了。界面?zhèn)鬏斝市阅艿膬?yōu)化截圖使用jpeg格式進(jìn)行最大的壓縮比,然后圖片質(zhì)量選擇0.6 這樣既不影響清晰度,也能夠最大限度的減少數(shù)據(jù)傳輸量, 進(jìn)而提高傳輸?shù)男势聊唤貓D的傳輸頻率,默認(rèn)是每隔5秒傳輸一次,但這樣的話 手機(jī)操作時(shí)無法實(shí)時(shí)傳送到服務(wù)端以及web
12、管理段,這給用 戶一種延時(shí)的感覺,這塊我們主要是針對(duì)界面切換和列表以 及滾動(dòng)這些事件做了主動(dòng)觸發(fā),這樣用戶就能感覺到管理頁 面跟手機(jī)幾乎是同步的有些時(shí)候屏幕界面是沒有變化,所以這時(shí)候發(fā)送截圖沒有必要, 所以我們隊(duì)截圖做一個(gè)md5保存,然后下次發(fā)送屏幕截圖時(shí)先 對(duì)比一下兩次截圖的md5值是否一樣,如果一樣就不發(fā)送截圖123控件ID重復(fù)導(dǎo)致錯(cuò)誤和重復(fù)發(fā)送問題:通用的ID生成規(guī)則針對(duì)某些特殊情況的控件會(huì)產(chǎn)生相 同的ID,例如同樣類名的button,并且位于相同的父view上,而且程序邏輯控制每次動(dòng)態(tài)add其中一個(gè), 這樣他們的view tree上的path也一樣;導(dǎo)致生成的ID 重復(fù);進(jìn)而影響界面繪制和事件統(tǒng)計(jì)解決方案:因?yàn)镾DK能拿到的控件信息有限,所以當(dāng)這些通用規(guī) 則都失效的情況下,只能通過服務(wù)端對(duì)這些控件進(jìn)行 特殊的配置,進(jìn)行定制,例如button里的text可能不 一樣,所以可以用這項(xiàng)信息添進(jìn)去?SDK技術(shù)發(fā)展趨勢(shì)盡量讓第三方app集成起來方便,盡量做到讓第三方開發(fā)者調(diào)用最少的代碼就能 集成SDK,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 解除土建合同協(xié)議書
- 高危工作安全協(xié)議書
- 超市利潤分紅協(xié)議書
- 道路遷墳火化協(xié)議書
- 金供應(yīng)商合同協(xié)議書
- 銷售生產(chǎn)訂單協(xié)議書
- 餐飲供應(yīng)合同協(xié)議書
- 農(nóng)村自流地?fù)Q地協(xié)議書
- 餐具承包合同協(xié)議書
- 買車位只有認(rèn)購協(xié)議書
- 黃泉下的美術(shù):宏觀中國古代墓葬
- 無違法犯罪記錄證明申請(qǐng)表(個(gè)人)
- 內(nèi)部調(diào)撥單表格
- 2023年07月浙江建設(shè)技師學(xué)院200人筆試歷年??键c(diǎn)試卷附帶答案詳解
- 中國真正丹道理法及工程次第闡真
- 2022年四川省成都市中考英語試卷及答案
- 新年春節(jié)廉潔過年過廉潔年端午節(jié)清廉文化中秋節(jié)廉潔過節(jié)優(yōu)秀課件兩篇
- GB/T 10920-2008螺紋量規(guī)和光滑極限量規(guī)型式與尺寸
- 認(rèn)知宇宙飛船之星際探索
- 皮膚病理知識(shí)學(xué)習(xí)整理課件整理
- 人工智能課件213產(chǎn)生式表示法
評(píng)論
0/150
提交評(píng)論