所謂埋點就是在應(yīng)用中特定的流程收集一些信息急鳄,用來跟蹤應(yīng)用使用的狀況谤民,后續(xù)用來進一步優(yōu)化產(chǎn)品或是提供運營的數(shù)據(jù)支撐,包括訪問數(shù)(Visits)疾宏,訪客數(shù)(Visitor)张足,停留時長(Time On Site),頁面瀏覽數(shù)(Page Views)和跳出率(Bounce Rate)坎藐。這樣的信息收集可以大致分為兩種:頁面統(tǒng)計(track this virtual page view)为牍,統(tǒng)計操作行為(track this button by an event)。
從技術(shù)層面上岩馍,埋點可分為代碼埋點碉咆、可視化埋點、無埋點這三種
1蛀恩、代碼埋點
代碼埋點出現(xiàn)的時間很早了疫铜,在 Google Analytics 年代,就已經(jīng)出現(xiàn)了類似的方案了赦肋。目前块攒,國內(nèi)的主要第三方數(shù)據(jù)分析服務(wù)商,如百度統(tǒng)計佃乘、友盟囱井、TalkingData 等都提供了這一方案。Sensors Analytics 也一樣提供了** iOS趣避、Android庞呕、Web** 等主流平臺的代碼埋點方案。
它的技術(shù)原理也很簡單,在APP或者界面初始化的時候住练,初始化第三方數(shù)據(jù)分析服務(wù)商的SDK(Software Development Kit)地啰,然后在某個事件發(fā)生時就調(diào)用SDK里面相應(yīng)的數(shù)據(jù)發(fā)送接口發(fā)送數(shù)據(jù)。例如讲逛,我們想統(tǒng)計APP里面某個按鈕的點擊次數(shù)亏吝,則在APP的某個按鈕被點擊時,可以在這個按鈕對應(yīng)的 OnClick 函數(shù)里面調(diào)用SDK提供的數(shù)據(jù)發(fā)送接口來發(fā)送數(shù)據(jù)盏混。
第一個例子是在使用者的某個 Android APP 里面蔚鸥,統(tǒng)計某個由 Activity 構(gòu)成的頁面的訪問次數(shù),下面是友盟官方給出的例子:
super.onResume();
MobclickAgent.onPageStart("SplashScreen"); //統(tǒng)計頁面(僅有Activity的應(yīng)用中SDK自動調(diào)用许赃,不需要單獨寫止喷。"SplashScreen"為頁面名稱,可自定義)
MobclickAgent.onResume(this); //統(tǒng)計時長
}
public void onPause() {
super.onPause();
MobclickAgent.onPageEnd("SplashScreen"); // (僅有Activity的應(yīng)用中SDK自動調(diào)用混聊,不需要單獨寫)保證 onPageEnd 在onPause 之前調(diào)用,因為 onPause 中會保存信息弹谁。"SplashScreen"為頁面名稱,可自定義
MobclickAgent.onPause(this);
}
第二個例子稍微復雜點句喜,它不再是統(tǒng)計頁面訪問這樣一個默認的事件预愤,而是統(tǒng)計一個自定義事件。例如咳胃,一個電商APP鳖粟,在用戶點擊“購買”按鈕時,想統(tǒng)計“購買”這個自定義事件的相應(yīng)信息拙绊,那么,可以使用下面的代碼:
HashMap<String,String> map = new HashMap<String,String>();
map.put("type","book");
map.put("quantity","3");
MobclickAgent.onEvent(mContext, "purchase", map);
優(yōu)點:
(1)使用者控制精準泳秀,可以非常精確地選擇什么時候發(fā)送數(shù)據(jù)
(2)使用者可以比較方便地設(shè)置自定義屬性标沪、自定義事件,傳遞比較豐富的數(shù)據(jù)到服務(wù)端嗜傅。
缺點:
(1)埋點代價比較大金句,每一個控件的埋點都需要添加相應(yīng)的代碼,不僅工作量大吕嘀,而且限定了必須是技術(shù)人員才能完成
(2)更新的代價比較大违寞,每一次更新埋點方案,都必須改代碼偶房,然后通過各個應(yīng)用市場進行分發(fā)趁曼,并且總會有相當多數(shù)量的用戶不喜歡更新APP,這樣埋點代碼也就得不到更新了
(3)所有前端埋點方案都會面臨的數(shù)據(jù)傳輸時效性和可靠性的問題了棕洋,這個問題就只能通過在后端收集數(shù)據(jù)來解決了
2挡闰、可視化埋點
可視化埋點是指開發(fā)人員除集成采集 SDK 外,不需要額外去寫埋點代碼,而是由業(yè)務(wù)人員通過訪問分析平臺的 圈選 功能來“圈”出需要對用戶行為進行捕捉的控件摄悯,并給出事件命名赞季。圈選完畢后,這些配置會同步到各個用戶的終端上奢驯,由采集 SDK 按照圈選的配置自動進行用戶行為數(shù)據(jù)的采集和發(fā)送申钩。
如下是騰訊移動分析的可視化埋點界面優(yōu)點:
(1)可視化埋點很好地解決了代碼埋點的埋點代價大和更新代價大兩個問題。但是瘪阁,可視化埋點能夠覆蓋的功能有限撒遣,目前并不是所有的控件操作都可以通過這種方案進行定制
(2)埋點只需業(yè)務(wù)同學接入,無需開發(fā)支持
缺點:
(1)無法做到自定義獲取數(shù)據(jù)罗洗,可視化埋點覆蓋的功能有限愉舔;
(2)企業(yè)針對SDK開發(fā)難度相比代碼埋點大
(3)僅支持客戶端行為
3.無埋點
無埋點是指開發(fā)人員集成采集 SDK 后,SDK 便直接開始捕捉和監(jiān)測用戶在應(yīng)用里的所有行為伙菜,并全部上報轩缤,不需要開發(fā)人員添加額外代碼;或者是說用戶展現(xiàn)界面元素時贩绕,通過控件綁定觸發(fā)事件火的,事件被觸發(fā)的時候系統(tǒng)會有相應(yīng)的接口讓開發(fā)者處理這些行為。現(xiàn)在市面上主流無埋點做法有兩種淑倾,一種是預先跟蹤所有的渲染信息馏鹤,一種是滯后跟蹤的渲染信息。
數(shù)據(jù)分析師/數(shù)據(jù)產(chǎn)品 通過管理后臺的圈選功能來選出自己關(guān)注的用戶行為娇哆,并給出事件命名湃累。之后就可以結(jié)合時間屬性、用戶屬性碍讨、事件進行分析了治力。所以無埋點并不是真的不用埋點了。
優(yōu)點:
(1)由于采集的是全量數(shù)據(jù)勃黍,所以產(chǎn)品迭代過程中是不需要關(guān)注埋點邏輯的宵统,也不會出現(xiàn)漏埋、誤埋等現(xiàn)象覆获。
(2)無埋點方式因為收集的是全量數(shù)據(jù)马澈,可以大大減少運營和產(chǎn)品的試錯成本,試錯的可能性高了弄息,可以帶來更多啟發(fā)性的信息痊班。
(3)無需埋點,方便快捷
(4)減少了因為人員流動帶來的溝通成本
(5)無需開發(fā)疑枯,業(yè)務(wù)人員埋點即可辩块;
(6)支持先上報數(shù)據(jù),后進行埋點
缺點:
(1) 缺點與可視化埋點相同,未解決個性化自定義獲取數(shù)據(jù)的問題废亭,缺乏數(shù)據(jù)獲取的靈活性国章;
(2) 企業(yè)針對SDK開發(fā)難度較大,一般由數(shù)據(jù)分析企業(yè)研發(fā)提供豆村,使用第三方提供的埋點方案液兽,有如下缺陷:
a、數(shù)據(jù)源丟失掌动,應(yīng)用上報的數(shù)據(jù)上傳至第三方服務(wù)端四啰,可能造成
企業(yè)泄密或用戶的關(guān)鍵數(shù)據(jù)丟失;
b粗恢、供應(yīng)商數(shù)據(jù)丟包問題柑晒,無法根據(jù)應(yīng)用特性進行改善
(3)無埋點采集全量數(shù)據(jù),給數(shù)據(jù)傳輸和服務(wù)器增加壓力
(4)僅僅支持客戶端