所謂埋點就是在應用中特定的流程收集一些信息,用來跟蹤應用使用的狀況,后續用來進一步優化產品或是提供運營的數據支撐,包括訪問數(Visits),訪客數(Visitor),停留時長(Time On Site),頁面瀏覽數(Page Views)和跳出率(Bounce Rate)。這樣的信息收集可以大致分為兩種:頁面統計(track this virtual page view),統計操作行為(track this button by an event)。
從技術層面上,埋點可分為代碼埋點、可視化埋點、無埋點這三種
- 識別流量攻擊、網絡爬蟲和流量作弊。
- 數據標准化(結構化)。
- 無效數據剔除。
- 降低日志服務器壓力。
1、代碼埋點
代碼埋點出現的時間很早了,在 Google Analytics 年代,就已經出現了類似的方案了。目前,國內的主要第三方數據分析服務商,如百度統計、友盟、TalkingData 等都提供了這一方案。Sensors Analytics 也一樣提供了** iOS、Android、Web** 等主流平台的代碼埋點方案。
它的技術原理也很簡單,在APP或者界面初始化的時候,初始化第三方數據分析服務商的SDK(Software Development Kit),然后在某個事件發生時就調用SDK里面相應的數據發送接口發送數據。例如,我們想統計APP里面某個按鈕的點擊次數,則在APP的某個按鈕被點擊時,可以在這個按鈕對應的 OnClick 函數里面調用SDK提供的數據發送接口來發送數據。
第一個例子是在使用者的某個 Android APP 里面,統計某個由 Activity 構成的頁面的訪問次數,下面是友盟官方給出的例子:
super.onResume();
MobclickAgent.onPageStart("SplashScreen"); //統計頁面(僅有Activity的應用中SDK自動調用,不需要單獨寫。"SplashScreen"為頁面名稱,可自定義)
MobclickAgent.onResume(this); //統計時長
}
public void onPause() {
super.onPause();
MobclickAgent.onPageEnd("SplashScreen"); // (僅有Activity的應用中SDK自動調用,不需要單獨寫)保證 onPageEnd 在onPause 之前調用,因為 onPause 中會保存信息。"SplashScreen"為頁面名稱,可自定義
MobclickAgent.onPause(this);
}
第二個例子稍微復雜點,它不再是統計頁面訪問這樣一個默認的事件,而是統計一個自定義事件。例如,一個電商APP,在用戶點擊“購買”按鈕時,想統計“購買”這個自定義事件的相應信息,那么,可以使用下面的代碼:
HashMap<String,String> map = new HashMap<String,String>(); map.put("type","book"); map.put("quantity","3"); MobclickAgent.onEvent(mContext, "purchase", map);
優點:
(1)使用者控制精准,可以非常精確地選擇什么時候發送數據
(2)使用者可以比較方便地設置自定義屬性、自定義事件,傳遞比較豐富的數據到服務端。
缺點:
(1)埋點代價比較大,每一個控件的埋點都需要添加相應的代碼,不僅工作量大,而且限定了必須是技術人員才能完成
(2)更新的代價比較大,每一次更新埋點方案,都必須改代碼,然后通過各個應用市場進行分發,並且總會有相當多數量的用戶不喜歡更新APP,這樣埋點代碼也就得不到更新了
(3)所有前端埋點方案都會面臨的數據傳輸時效性和可靠性的問題了,這個問題就只能通過在后端收集數據來解決了
2、可視化埋點
可視化埋點是指開發人員除集成采集 SDK 外,不需要額外去寫埋點代碼,而是由業務人員通過訪問分析平台的 圈選 功能來“圈”出需要對用戶行為進行捕捉的控件,並給出事件命名。圈選完畢后,這些配置會同步到各個用戶的終端上,由采集 SDK 按照圈選的配置自動進行用戶行為數據的采集和發送。
如下是騰訊移動分析的可視化埋點界面


優點:
(1)可視化埋點很好地解決了代碼埋點的埋點代價大和更新代價大兩個問題。但是,可視化埋點能夠覆蓋的功能有限,目前並不是所有的控件操作都可以通過這種方案進行定制
(2)埋點只需業務同學接入,無需開發支持
缺點:
(1)無法做到自定義獲取數據,可視化埋點覆蓋的功能有限;
(2)企業針對SDK開發難度相比代碼埋點大
(3)僅支持客戶端行為
3.無埋點
無埋點是指開發人員集成采集 SDK 后,SDK 便直接開始捕捉和監測用戶在應用里的所有行為,並全部上報,不需要開發人員添加額外代碼;或者是說用戶展現界面元素時,通過控件綁定觸發事件,事件被觸發的時候系統會有相應的接口讓開發者處理這些行為。現在市面上主流無埋點做法有兩種,一種是預先跟蹤所有的渲染信息,一種是滯后跟蹤的渲染信息。
數據分析師/數據產品 通過管理后台的圈選功能來選出自己關注的用戶行為,並給出事件命名。之后就可以結合時間屬性、用戶屬性、事件進行分析了。所以無埋點並不是真的不用埋點了。
優點:
(1)由於采集的是全量數據,所以產品迭代過程中是不需要關注埋點邏輯的,也不會出現漏埋、誤埋等現象。
(2)無埋點方式因為收集的是全量數據,可以大大減少運營和產品的試錯成本,試錯的可能性高了,可以帶來更多啟發性的信息。
(3)無需埋點,方便快捷
(4)減少了因為人員流動帶來的溝通成本
(5)無需開發,業務人員埋點即可;
(6)支持先上報數據,后進行埋點
缺點:
(1) 缺點與可視化埋點相同,未解決個性化自定義獲取數據的問題,缺乏數據獲取的靈活性;
(2) 企業針對SDK開發難度較大,一般由數據分析企業研發提供,使用第三方提供的埋點方案,有如下缺陷:
a、數據源丟失,應用上報的數據上傳至第三方服務端,可能造成
企業泄密或用戶的關鍵數據丟失;
b、供應商數據丟包問題,無法根據應用特性進行改善
(3)無埋點采集全量數據,給數據傳輸和服務器增加壓力
(4)僅僅支持客戶端
作者:敢敢寶寶
鏈接:https://www.jianshu.com/p/37cbb7607ca4
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。