Android端非侵入式數(shù)據(jù)采集框架-EMonitor

本文將會介紹Android端非侵入式數(shù)據(jù)采集框架EMonitor

手機客戶端作為重要的流量入口,經(jīng)常會肩負著用戶數(shù)據(jù)監(jiān)測和數(shù)據(jù)采集的重任。待采集的數(shù)據(jù)包括用戶何時啟動應(yīng)用,瀏覽了哪些頁面,點擊了哪些按鈕等等,對于此類需求,比較簡單粗暴的做法就是手動埋點,在需要采集數(shù)據(jù)的位置添加相應(yīng)的代碼。這種做法不僅工作量巨大,而且會增加代碼的耦合度,后期維護成本高。

EMonitor是一款非侵入式的數(shù)據(jù)采集框架,開發(fā)者不需要改動任何代碼,只要引入EMonitor庫并調(diào)用相關(guān)接口就可以實現(xiàn)全量的數(shù)據(jù)采集,代碼耦合度低,易于后期維護。

1.引入EMonitor庫

在project下的build.gradle文件中添加依賴:

maven {url 'https://dl.bintray.com/jnzhang/EMonitor'}

classpath 'com.emonitor.core:emonitorplugin:1.4.8'

在module下的build.gradle文件中添加引用和插件:

apply plugin: 'emplugin'

implementation 'com.emonitor.core:emonitorcore:1.3.1'

2.初始化EmBaseTask

在應(yīng)用程序的入口初始化EmBaseTask:

EmBaseTask.getInstance().init(context);

初始化成功后,EMonitor將會對應(yīng)用的各種行為進行統(tǒng)計,并將統(tǒng)計到的數(shù)據(jù)保存在應(yīng)用目錄下的emonitor_log.log文件中,開發(fā)者可以獲取log中的內(nèi)容進行相應(yīng)的處理,log文件中數(shù)據(jù)的樣式:

2018-11-02 16:38:41 onPause/MainActivity: 
2018-11-02 16:38:41 onResume/TaskActivity: 
2018-11-02 16:38:43 onClick/TaskActivity: AppCompatButton[0]LinearLayout[0]ConstraintLayout[0]ContentFrameLayout[0]ActionBarOverlayLayout[0]FrameLayout[1]LinearLayout[0]
2018-11-02 16:39:25 onClick/TaskActivity: AppCompatButton[1]LinearLayout[0]ConstraintLayout[0]ContentFrameLayout[0]ActionBarOverlayLayout[0]FrameLayout[1]LinearLayout[0]
2018-11-02 16:39:29 onClick/TaskActivity: AppCompatButton[2]LinearLayout[0]ConstraintLayout[0]ContentFrameLayout[0]ActionBarOverlayLayout[0]FrameLayout[1]LinearLayout[0]
2018-11-02 16:39:32 onClick/TaskActivity: AppCompatButton[0]LinearLayout[3]LinearLayout[0]ConstraintLayout[0]ContentFrameLayout[0]ActionBarOverlayLayout[0]FrameLayout[1]LinearLayout[0]
2018-11-02 16:40:18 onClick/TaskActivity: AppCompatButton[1]LinearLayout[3]LinearLayout[0]ConstraintLayout[0]ContentFrameLayout[0]ActionBarOverlayLayout[0]FrameLayout[1]LinearLayout[0]
2018-11-02 16:45:11 onResume/MainActivity: 
2018-11-02 16:45:11 onPause/MainActivity: 
2018-11-02 16:45:11 onResume/TaskActivity: 
2018-11-02 16:45:13 onClick/TaskActivity: LinearLayout[0]FrameLayout[1]ActionBarOverlayLayout[0]ContentFrameLayout[0]ConstraintLayout[0]LinearLayout[0]AppCompatButton[0]
2018-11-02 16:45:47 onClick/TaskActivity: LinearLayout[0]FrameLayout[1]ActionBarOverlayLayout[0]ContentFrameLayout[0]ConstraintLayout[0]LinearLayout[0]AppCompatButton[1]
2018-11-02 16:47:02 onPause/TaskActivity: 
2018-11-02 16:47:02 onResume/MainActivity: 

3.實現(xiàn)相關(guān)接口

很多時候EMonitor自帶的Log文件并不能滿足開發(fā)者的需求,EMonitor也提供了一些接口,開發(fā)者可以調(diào)用這些接口來實現(xiàn)自己的業(yè)務(wù)邏輯。

3.1調(diào)用用戶點擊某個控件的監(jiān)聽:

  EmBaseTask.getInstance().setEmClickListener(new EmClickListener() {
        @Override
        public void onClick(SingleClickBean singleClickBean) {
            //業(yè)務(wù)邏輯
        }
    });

3.2調(diào)用用戶進出某個頁面的監(jiān)聽:

  EmBaseTask.getInstance().setEmEventListener(new EmEventListener() {
        @Override
        public void EmOnResume(EmEventBean emEventBean) {
            //業(yè)務(wù)邏輯
        }

        @Override
        public void EmOnPause(EmEventBean emEventBean) {
            //業(yè)務(wù)邏輯
        }
    });

EMonitor框架接下來將會逐步添加列表瀏覽事件監(jiān)測和用戶地理位置監(jiān)測等功能。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,171評論 3 119
  • 問題一:shell script invocation error React/RCTBundleURLProv...
    CoderZNB閱讀 342評論 0 0
  • 田華2017.10.3第二十二 【一個目標】 店三個月純收入10萬元 【與此相關(guān)的好種子】 (1)給父母發(fā)紅包9....
    竹林千頃田華閱讀 189評論 0 2

友情鏈接更多精彩內(nèi)容