在互聯網產品上線之后,產品和運營人員需要即時了解產品的使用情況,有多少用戶,用戶使用了哪些功能,停留時長,使用路徑。。。等。要回答這些問題,需要有數據,不能拍腦袋想當然。數據怎么得到呢?埋點就是采集數據的重要途徑。
數據埋點不是新名詞,在電腦網站出來之后就有統計工具,站長們很熟悉的谷歌、百度統計等工具,通過在HTML頁面中嵌入它們提供的js代碼實現數據采集。
多說幾句,無論谷歌、百度還是其它的Web頁面統計工具,技術實現原理通常都是由Web服務器端通過代碼的方式向瀏覽器返回一張 1*1 像素的透明圖片(在網頁上人眼看不到這張圖片),圖片的過期時間設置成立即過期,這樣每次打開頁面瀏覽器都會去請求這張圖片,服務器端就可以記錄下請求數據。明白了原理,自己也可以寫一個簡單的統計工具。
在設計埋點方案之前需要確定收集哪些數據,將這些需求匯總,產品、運營、技術一起確定埋點方案。
從埋點位置划分,可以分為:前端埋點,后端埋點。
前端埋點
顧名思義就是在用戶可見的那端(APP、網頁、PC客戶端、小程序)嵌入數據采集代碼,像一些第三方的統計工具,比如友盟等,前端嵌入它們的SDK,調用SDK提供的接口采集數據。
前端埋點能收集到用戶在界面上的操作軌跡,這些數據后端沒法收集,比如用戶點擊了哪個按鈕,打開了哪些頁面,頁面之間的跳轉次序等。
后端埋點
后端埋點就是在服務端嵌入代碼,收集數據,由於是在服務端采集數據,可以避免前端埋點的以下一些問題:
客戶端采集數據,為了盡量減少對用戶體驗的影響,需要對采集的數據壓縮、暫存,為減少移動端的數據流量,一般只在網絡狀況良好的情況下向服務器發送數據,因此數據會有延遲,丟數據等弊端。而在服務端采集數據,數據在內網傳輸,數據傳輸的即時性強,丟失數據的風險小。
客戶端采集數據,如果要增加采集點或變更采集方案,需要修改客戶端代碼,這就需要發布新版本,受發布周期的影響,而且通常很多用戶並不會及時更新版本,將導致新方案不能覆蓋所有用戶。在服務端采集數據則沒有這些問題。
通過以上比較,實施時盡量采用后端埋點,除非后端沒法采集到所需要的數據。
前端埋點技術
目前常見的前端埋點技術,有下面三類:
1、代碼埋點
谷歌統計、百度統計、友盟等都是代碼埋點的例子。在前端代碼里嵌入數據采集代碼,比如在APP啟動時嵌入,在按鈕點擊事件里嵌入等。
代碼埋點的優點是控制精准,采集的數據項精確。缺點:首先是需要開發人員到處添加采集代碼,添加和修改的工作量大;其次變更采集策略,需要發布新版本,代價巨大;此外對於APP來說還有耗電、消耗數據流量、丟失數據的風險。
2、可視化埋點
從上面可知,代碼埋點的缺點很多,最大的缺點是變更需要開發人員修改代碼,不靈活。為了改善,有的公司開發出了可視化埋點技術,產品與運營人員通過GUI界面,鼠標點擊的方式隨時調整埋點位置,增加、取消埋點,再也不需要開發人員的介入,而且不用發布新版本。
最早提供這種方案的是 Mixpanel 公司,Github上有該公司發布的SDK代碼,https://github.com/mixpanel。國內提供可視化埋點技術的公司大都是在它的基礎上進行二次開發而成。
技術實現原理
基本原理就是將埋點位置信息做成可配置的資源,通過在后台管理端上操作生成這些配置,客戶端啟動或者定時從服務器端獲取這些配置,客戶端根據最新的配置采集數據,發送給服務端。
具體實現是SDK定時做界面截圖,在截圖的同時從界面UI的根對象開始遍歷所有的可視化子對象,得到其層級關系。根據截圖和UI元素的可視化信息重新渲染頁面,識別可埋點的控件。當產品人員在后台管理端的截屏畫面上點擊可埋點控件,設置事件關聯方面的配置,服務器保存這些配置,客戶端在獲取到這些配置信息以后,按照新配置采集數據。
3、無埋點
原理跟可視化埋點幾乎一樣,唯一的不同就是,無埋點是先把所有控件的操作數據采集下來,發給服務器,數據分析人員在后台管理端設置對哪些數據進行分析。由此可知,這個方案收集的數據量巨大,增加了網絡傳輸和服務器存儲負擔。
無埋點比可視化方案優勢的地方是收集的歷史數據齊全,可以回溯分析過往數據。
工具選擇
國內不少數據服務公司提供了數據采集、分析工具,初創公司可以選擇使用它們的服務,不過最好選擇可以獨立部署的提供方,方便控制,防止數據泄漏。
總結一下,數據埋點需要根據需求而定,靈活使用以上方案,揚長避短。
數據埋點產品上線之后最重要的事情就是獲取用戶和運營推廣,有關這個話題,參看《互聯網產品發掘種子用戶和意見領袖的方法》。
