Android埋點技術概覽


注:本文同步發布於微信公眾號:stringwu的互聯網雜談Android無埋點技術概覽
本文是Android無埋點系列的開篇——-埋點技術概覽

1 背景

埋點是數據產品經理(分析師)基於業務需求,對用戶在應用內產生的頁面和位置植入相關代碼,並通過采集工具上報統計數據。這些埋點數據是推動產品優化和運營的重要參考。而按照埋點采集數據類型不同,可以把埋點采集的數據分為以下幾類:

  • 點擊埋點:用戶點擊了某一個icon;
  • 頁面埋點:用戶進入應用的某個具體頁面;
  • 曝光埋點:某個模塊(區域)被用戶看到的次數;

點擊和頁面埋點都有明確的觸發時間(事件),而曝光埋點則沒有明確的觸發時間點,一般認為AndroidView被渲染出來就認為是一個曝光。很多情況下View被渲染並不代表它是可被用戶看到的。

1 Android 埋點技術概覽

不同業務(公司)在在進行埋點方案選型時,會根據業務形態去選擇最適合自己的方案,一般都離不開這幾點:

  • 埋點的工作量要小,有更改時最好可以不發客戶端版本就生效;
  • 埋點的質量要高,能保證數據的准確性;
  • 埋點攜帶的業務數據要盡可能精確,方便后續的數據分析;

1.1 埋點簡介

埋點又叫數據埋點,是數據采集領域(尤其是用戶行為數據采集領域)的術語,是指在應用中特定流程收集一些信息(用戶行為或事件),如用戶點擊某個icon次數,用戶瀏覽某個頁面的時長等等。埋點采集到的數據是數據分析人員用來分析應用的使用狀況和為優化產品的重要依據。

1.2 埋點技術

隨着技術的進步和發展,互聯網各家公司從不同角度,提出了多種技術方案,這些方案可以歸類為:

  • 代碼埋點
  • 可視化埋點
  • 無埋點
    下面簡要介紹一下這幾種埋點技術方案。

2 代碼埋點

代碼埋點,是最早出現的一種技術,也是最基礎的一種技術,開發人員按照產品(運營)的埋點文檔,在用戶行為滿足一定條件時(如點擊某個icon),調用數據上報的接口上報該行為數據。該技術方案特點:

  • 控制精准,可以自由選擇上報時機和上報數據,並且可以根據不同的場景定制不同的上報數據字段;
  • 埋點方案的修改依賴於終端發版,上線周期長;
    代表方案是國內的友盟,極光等第三方數據統計服務商

3 可視化埋點

可視化埋點是指通過可視化工具選擇需要收集的埋點數據,下發配置給客戶端,客戶端進行配置的解析並采集對應節點的數據。一般是客戶端APP在不同的頁面截圖發送給服務器,由服務器根據該截圖,生成需要采集的節點的配置信息,該技術方案特點:

  • 埋點的開發量小,數據的發送量級可控,可以直接線上下發配置進行動態埋點;
  • 技術方案實現復雜,並且覆蓋功能有限,沒有辦法定制上報的數據字段;
  • 數據上報是基於配置的,上報只有從拿到配置時刻開始,沒有辦法解決數據回溯問題;
    代表方案是國內的GrowingIO,相關的核心技術方案見:開源的Mixpanel
    GrowIO

備注:圖片來源於GrowIO官網

4 Android 無埋點

無埋點並不是不需要埋點,而是指將App內產生的所有的、滿足某些條件的行為,全部自動采集並上報到數據后台。在計算時對數據進行篩選,選出可用的數據,該技術方案特點:

  • 優點:埋點的開發量小,數據上報全面;
  • 缺點:數據量大,上報的數據里可能有大量的沒有價值的數據。傳統的無埋點技術上報字段有限,並且沒有辦法定制上報字段;
    代表方案是國內的神策數據,GrowingIO也提供有類似的解決方案

4.1 無埋點背景

Android中的無埋點一般是通過全局監聽或AOP技術來實現的。Android傳統意義上實現無埋點的兩大核心技術:

  • View的唯一ID;
  • 無埋點實現(代理監聽或gradle插件在編譯時插樁);

本文不再詳細講解無埋點的兩大核心技術,有興趣的小伙伴可以參考網易團隊的無埋點實踐文章網易HubbleData之Android無埋點實踐

但傳統的無埋點有三個致命的缺點:

  • 埋點字段有限,沒有辦法攜帶精確的業務字段;
  • 數據量太大,后台存儲壓力很大;
  • View的唯一ID會隨着頁面的變化而變化,多個版本的數據需要在后台進行數據映射

這幾個缺點也是很多公司在選擇埋點的解決方案時沒有選擇無埋點的原因,這里有沒有辦法去進行一個改進的設計呢?

無埋點系列下一篇文章:《Android無埋點系列之偽無埋點框架》將會講到如何基於無埋點的技術,去設計並實現一個滿足業務常規需求的埋點框架;

5 參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM