注:本文同步釋出於微信公眾號:stringwu的網際網路雜談Android無埋點技術概覽
本文是Android無埋點系列的開篇——-埋點技術概覽
1 背景
埋點是資料產品經理(分析師)基於業務需求,對使用者在應用內產生的頁面和位置植入相關程式碼,並通過採集工具上報統計資料。這些埋點資料是推動產品優化和運營的重要參考。而按照埋點採集資料型別不同,可以把埋點採集的資料分為以下幾類:
- 點選埋點:使用者點選了某一個icon;
- 頁面埋點:使用者進入應用的某個具體頁面;
- 曝光埋點:某個模組(區域)被使用者看到的次數;
點選和頁面埋點都有明確的觸發時間(事件),而曝光埋點則沒有明確的觸發時間點,一般認為Android
中View
被渲染出來就認為是一個曝光。很多情況下View
被渲染並不代表它是可被使用者看到的。
1 Android 埋點技術概覽
不同業務(公司)在在進行埋點方案選型時,會根據業務形態去選擇最適合自己的方案,一般都離不開這幾點:
- 埋點的工作量要小,有更改時最好可以不發客戶端版本就生效;
- 埋點的質量要高,能保證資料的準確性;
- 埋點攜帶的業務資料要儘可能精確,方便後續的資料分析;
1.1 埋點簡介
埋點又叫資料埋點,是資料採集領域(尤其是使用者行為資料採集領域)的術語,是指在應用中特定流程收集一些資訊(使用者行為或事件),如使用者點選某個icon次數,使用者瀏覽某個頁面的時長等等。埋點採集到的資料是資料分析人員用來分析應用的使用狀況和為優化產品的重要依據。
1.2 埋點技術
隨著技術的進步和發展,網際網路各家公司從不同角度,提出了多種技術方案,這些方案可以歸類為:
- 程式碼埋點
- 視覺化埋點
- 無埋點
下面簡要介紹一下這幾種埋點技術方案。
2 程式碼埋點
程式碼埋點,是最早出現的一種技術,也是最基礎的一種技術,開發人員按照產品(運營)的埋點文件,在使用者行為滿足一定條件時(如點選某個icon),呼叫資料上報的介面上報該行為資料。該技術方案特點:
- 控制精準,可以自由選擇上報時機和上報資料,並且可以根據不同的場景定製不同的上報資料欄位;
- 埋點方案的修改依賴於終端發版,上線週期長;
代表方案是國內的友盟,極光等第三方資料統計服務商
3 視覺化埋點
視覺化埋點是指通過視覺化工具選擇需要收集的埋點資料,下發配置給客戶端,客戶端進行配置的解析並採集對應節點的資料。一般是客戶端APP在不同的頁面截圖傳送給伺服器,由伺服器根據該截圖,生成需要採集的節點的配置資訊,該技術方案特點:
- 埋點的開發量小,資料的傳送量級可控,可以直接線上下發配置進行動態埋點;
- 技術方案實現複雜,並且覆蓋功能有限,沒有辦法定製上報的資料欄位;
- 資料上報是基於配置的,上報只有從拿到配置時刻開始,沒有辦法解決資料回溯問題;
代表方案是國內的GrowingIO,相關的核心技術方案見:開源的Mixpanel
備註:圖片來源於GrowIO官網
4 Android 無埋點
無埋點並不是不需要埋點,而是指將App內產生的所有的、滿足某些條件的行為,全部自動採集並上報到資料後臺。在計算時對資料進行篩選,選出可用的資料,該技術方案特點:
- 優點:埋點的開發量小,資料上報全面;
- 缺點:資料量大,上報的資料裡可能有大量的沒有價值的資料。傳統的無埋點技術上報欄位有限,並且沒有辦法定製上報欄位;
代表方案是國內的神策資料,GrowingIO也提供有類似的解決方案
4.1 無埋點背景
Android中的無埋點一般是通過全域性監聽或AOP技術來實現的。Android傳統意義上實現無埋點的兩大核心技術:
- View的唯一ID;
- 無埋點實現(代理監聽或gradle外掛在編譯時插樁);
本文不再詳細講解無埋點的兩大核心技術,有興趣的小夥伴可以參考網易團隊的無埋點實踐文章網易HubbleData之Android無埋點實踐
但傳統的無埋點有三個致命的缺點:
- 埋點欄位有限,沒有辦法攜帶精確的業務欄位;
- 資料量太大,後臺儲存壓力很大;
- View的唯一ID會隨著頁面的變化而變化,多個版本的資料需要在後臺進行資料對映
這幾個缺點也是很多公司在選擇埋點的解決方案時沒有選擇無埋點的原因,這裡有沒有辦法去進行一個改進的設計呢?
無埋點系列下一篇文章:《Android無埋點系列之偽無埋點框架》將會講到如何基於無埋點的技術,去設計並實現一個滿足業務常規需求的埋點框架;