揭祕數極客Android無埋點資料採集原理
採集資料柯林斯基本分為程式碼埋點狀語從句:無埋點。近年來無埋點的資料採集方案越來越普及,而無埋點的實現方案也有多種,我們今天討論的問題是資料採集的一種方案,是無需開發人員重複進行採集事件的程式碼埋點就能達到採集客戶端所需資料的解決方案,也就是無埋點資料採集方案。
介紹無埋點資料採集方案之前,需要大家對以下幾個知識點非常瞭解:
1. view的事件分發機制
2.使用gradle編譯Android專案的流程
3.動態修改位元組碼
一,無埋點的意義和價值:
客戶端埋點是資料收集的最基本手段,但由於業務迭代速度很快,手動埋點方案雖然靈活多變,但是極大的增加了客戶端開發人員的工作量。開發完成業務功能需要花費很大的時間和精力去處理埋點事宜,而且隨著迭代版本,埋點的數量會越來越多,這些老舊埋點的維護工作也需要付出很多資源,而且,手動埋點的正確性也沒有想像的那麼高,因為這個埋點的準確性需要開發人員非常瞭解業務邏輯和非常認真的檢查埋點。所以,如果能夠研發出一款不需要或者很少需要開發人員介入就能實現根據不同業務場景埋點的功能SDK對於提高版本迭代速度和釋放開發人員的經歷絕對是一件非常有價值的事情。
二,無埋點的實現原理介紹
為了實現無埋點我們需要解決事件觸發的控制元件(檢視)唯一標識問題,首先我們都知道頁面是由一個viewtree構成的,通過層級排列和位置順序我們能唯一找到一個檢視。
我們主要是通過頁面名稱+ viewtree的佈局名稱+佈局位置+控制元件的屬性來確定這個檢視的唯一標識。所謂的控制元件屬性就是根據不同的檢視子類的特性獲得相應不同的特殊屬性來做到最大限度的確定唯一性。所以我們就需要便利檢視樹,首先需要獲得根檢視,之後通過事件的觸發位置來遍歷尋找目標控制元件。
當事件觸發時我們可以找到目標檢視時,我們就可以唯一確定這個檢視的標識,這樣我們也就可以將事件和業務資料進行繫結,為以後視覺化埋點打下基礎。也保證了事件的準確性和真實性。
至此我們就確定了view 的唯一性,這樣其實只是無埋點的一部分,要做到無埋點就是要自動的將埋點程式碼插入到我們事件觸發的位置,這個事件觸發的位置我們都知道,就是事件的監聽.
我需要找到你要埋單的位置,之後通過在編譯期修改位元組碼的方式將埋點程式碼插入到相應的位置。在Android app的編譯期進行干預,實現修改目標類檔案,從而實現自動插入埋點程式碼。主要過程是當編譯開始時,gradle外掛負責啟動代理,代理負責修改位元組碼,幫我們插入埋點程式碼。到此我們的無埋點才算完成。
以上完成我們只是做到了收集全量事件的目的,我們有很多時候是需要對某個特定事件做重新定義,比如登陸事件,我們需要知道一段時間內有多少人登陸,這時候我們需要在登陸事件下做特殊處理,正常思維是我們需要手動埋點之後傳送,但是作為無埋點,我們就要引入一個新的概念就是視覺化埋點修改,就是不需要開發人員修改程式碼,通過手機視覺化的方式來直接修改。
先來了解下視覺化埋點。
請看以下幾個視覺化埋點的功能介面,可以非常直觀的瞭解無埋點的效果:
第一步:啟動集成了數極客無埋點SDK的APP
第二步:切換到埋點模式,圈選埋點內容
第三步:儲存圈選的按鈕的視覺化埋點名稱
實現過程:
我們首先要知道我們點選的是哪個控制元件,也就是目標檢視,這就用到了之前說過的,我們要便利檢視樹,要唯一確定一個檢視。當我們能找到我們點選目標檢視時,我們就可以將這個檢視拿出來,通過檢視的唯一標識來區分這個檢視中,當我們將圖的相關屬性設定好後,我們將資料傳給伺服器,當時伺服器配置生效後
,我們再推給客戶端,當時這個事件再次發生時,我們通過檢視的唯一標識就能就之前設定好的資訊,和這次事件對應上,這樣就實現了視覺化的修改埋點的目的。
最後再介紹一下數極客:
數極客是國內新一代使用者行為分析平臺,支援無埋點採集,前端程式碼埋點採集,後端程式碼埋點採集等多種混合資料採集方式,支援30多種資料視覺化效果,是增長黑客必的備大資料分析工具,支援APP分析資料網站分析及使用者畫像,獨創了6大轉化率分析模型,的英文使用者行為分析領域首家應用定量分析與定性分析方法的資料分析產品,運用數極客使用者行為錄屏系統,可以分析並優化使用者體驗的細節,基於使用者行為分析系統- ,了提供會員營銷系統- A / B測試工具兩大資料智慧應用解決方案,企業使得可以快速的實現資料驅動增長。
歡迎關注數極客微信公眾號:shujujike,更全面的獲取無埋點及使用者行為大資料分析的要點。
原創作者:楊永強數極客技術合夥人