[發(fā)明專利]一種基于iOS應(yīng)用的輕量級解耦式埋點方法及裝置在審
| 申請?zhí)枺?/td> | 202011084482.5 | 申請日: | 2020-10-12 |
| 公開(公告)號: | CN112230903A | 公開(公告)日: | 2021-01-15 |
| 發(fā)明(設(shè)計)人: | 金小俊;趙化;李衛(wèi)麗 | 申請(專利權(quán))人: | 上海賽可出行科技服務(wù)有限公司 |
| 主分類號: | G06F8/30 | 分類號: | G06F8/30;G06F11/36 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 200131 上海市浦東新區(qū)自由貿(mào)*** | 國省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 ios 應(yīng)用 輕量級 解耦式埋點 方法 裝置 | ||
1.一種基于iOS應(yīng)用的輕量級解耦式埋點方法及裝置,其特征在于,所述裝置包括埋點配置JSON表和埋點SDK,具體埋點方法如下:
一、配置埋點信息
埋點配置JSON表中包含需要hook的類名class和具體的事件event信息,event中包括hook的方法和對應(yīng)的埋點值;通過AOP的方式物理隔離埋點代碼和業(yè)務(wù)代碼,避免埋點的邏輯侵入污染業(yè)務(wù)邏輯;埋點包括固定埋點和需要邏輯判斷的場景化埋點,對于場景化埋點,需要提供一個impl類來提供相應(yīng)的邏輯判斷;
二、固定埋點場景:
對于固定的埋點,只需要在對應(yīng)的方法執(zhí)行時直接記錄埋點,具體方法為利用iOS系統(tǒng)的runtime來實現(xiàn)AOP,通過MethodSwizzling機(jī)制來hook相應(yīng)的類和方法;為了便于檢測無效的埋點,還需對hook的類和方法進(jìn)行匹配校驗,若類中沒有對應(yīng)的方法,則拋出斷言;
三、場景化埋點:
場景化埋點主要為同一事件但是在多種狀態(tài)或邏輯下不同埋點的情況,本發(fā)明通過提供一個protocol由埋點impl類來實現(xiàn),根據(jù)不同的邏輯判斷,返回對應(yīng)的埋點值;埋點實現(xiàn)類的類名需要與埋點配置JSON中的event里的key保持一致;
四、狀態(tài)判斷:
根據(jù)狀態(tài)量來確定埋點值;根據(jù)訂單種類和訂單狀態(tài)來返回對應(yīng)的埋點值,首先定義JSON表中同名的impl類,并遵循RJEventTracking協(xié)議;
五、入?yún)⑴袛啵?/p>
需要根據(jù)JSON中設(shè)置的所hook方法的入?yún)泶_定埋點名稱的情況,比如在訂單列表中點擊全部、進(jìn)行中、待支付、待評價、已完成菜單項時分別埋點;被hook的方法為tripLabClickWithLabKey:其參數(shù)為UILabel,原先代碼中通過Label的tag判斷是點擊的哪個子項,同樣,可以獲取到Label的入?yún)⑷缓髶?jù)此判斷,由于參數(shù)只有一個,所以可以直接取arguments第一個值;通過AOP來hook方法時,可以獲取到當(dāng)前hook方法所對應(yīng)的實例對象和入?yún)ⅲ谡{(diào)用協(xié)議方法時,直接傳給協(xié)議實現(xiàn)類;
六、方法調(diào)用:
和讀取屬性值類似,也是在不同場景下同一事件不同埋點名稱的情況,但獲取的狀態(tài)量不是當(dāng)前實例對象的,而是某個方法的返回值,這種情況下可以通過埋點SDK提供的方法調(diào)用函數(shù)來實現(xiàn);
七、邏輯判斷:
對于需要額外添加邏輯判斷的場景,比如在訂單詳情頁需要統(tǒng)計用戶進(jìn)入頁面的查看行為,但是詳情頁的類型需要在網(wǎng)絡(luò)請求后才能獲取,而且該網(wǎng)絡(luò)請求會定時觸發(fā),所以埋點hook的方法會走多次,該情況下,需要添加一個屬性用來標(biāo)記是否已記錄埋點,故而埋點SDK需要提供動態(tài)添加屬性的功能;在埋點實現(xiàn)impl類里面,添加額外的屬性來標(biāo)記是否已記錄過埋點;使用addExtraProperty:defaultValue:來給當(dāng)前實例動態(tài)添加屬性,而extraProperty:方法則用來獲取實例的某個額外屬性,如果isRecorded返回YES代表已經(jīng)記錄過該埋點,返回nil值來忽略該次埋點;
八、動態(tài)下發(fā)埋點配置:
埋點JSON配置表可以由服務(wù)器提供接口,客戶端在每次啟動時通過接口獲取最新埋點配置表,從而達(dá)到動態(tài)下發(fā)的目的,客戶端拿到JSON后,讀取埋點信息并生效;讀取埋點配置的邏輯為遍歷埋點中的類和hook的方法,并檢測是固定埋點還是場景化埋點,對于場景化埋點的情況查詢是否有對應(yīng)的埋點impl實現(xiàn)類,當(dāng)然,還需檢測JSON配置表的合法性,每個類和其中的方法是否匹配。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于上海賽可出行科技服務(wù)有限公司,未經(jīng)上海賽可出行科技服務(wù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011084482.5/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 基于IOS終端的離線WIFI熱點認(rèn)證方法和認(rèn)證系統(tǒng)
- 一種綁定iOS設(shè)備的方法、iOS設(shè)備及輔助設(shè)備
- 自動讀取設(shè)備參數(shù)的方法和Android工控系統(tǒng)
- 一種由Unity到iOS的封裝方法及裝置
- 在iOS客戶端后臺持續(xù)運行APP的方法及系統(tǒng)
- 一種確定IOS設(shè)備的標(biāo)識的方法及裝置
- ios應(yīng)用程序自動安裝方法及通信裝置
- 遠(yuǎn)程連接iOS設(shè)備的方法、裝置、和設(shè)備
- 一種iOS組件的管理方法、裝置、電子設(shè)備及存儲介質(zhì)
- 一種基于多進(jìn)程的iOS兼容性自動化測試方法與裝置
- 在線應(yīng)用平臺上應(yīng)用間通信的回調(diào)應(yīng)答方法、應(yīng)用及在線應(yīng)用平臺
- 應(yīng)用使用方法、應(yīng)用使用裝置及相應(yīng)的應(yīng)用終端
- 應(yīng)用管理設(shè)備、應(yīng)用管理系統(tǒng)、以及應(yīng)用管理方法
- 能力應(yīng)用系統(tǒng)及其能力應(yīng)用方法
- 應(yīng)用市場的應(yīng)用搜索方法、系統(tǒng)及應(yīng)用市場
- 使用應(yīng)用的方法和應(yīng)用平臺
- 應(yīng)用安裝方法和應(yīng)用安裝系統(tǒng)
- 使用遠(yuǎn)程應(yīng)用進(jìn)行應(yīng)用安裝
- 應(yīng)用檢測方法及應(yīng)用檢測裝置
- 應(yīng)用調(diào)用方法、應(yīng)用發(fā)布方法及應(yīng)用發(fā)布系統(tǒng)
- 高速高帶寬AHB總線到低速低帶寬AHB總線的雙向轉(zhuǎn)換橋
- 可拆裝換鉤頭的1輕量級的鋁制手柄及十四枚鋼鉤針組合
- 一種輕量級節(jié)點的數(shù)據(jù)傳輸方法、裝置、設(shè)備和介質(zhì)
- 一種輕量級節(jié)點的數(shù)據(jù)傳輸方法、裝置、設(shè)備和介質(zhì)
- 輕量級請求的并發(fā)處理方法及相關(guān)設(shè)備
- 一種輕量級深度卷積神經(jīng)網(wǎng)絡(luò)的FPGA實現(xiàn)方法
- 一種小區(qū)選擇方法、輕量級終端及網(wǎng)絡(luò)設(shè)備
- 授權(quán)簽名生成方法、節(jié)點管理方法、裝置、設(shè)備和介質(zhì)
- 輕量級桌面機(jī)械臂底座及輕量級桌面機(jī)械臂
- 輕量級機(jī)械臂束線結(jié)構(gòu)、輕量級機(jī)械臂及機(jī)器人





