android自定義(無埋點)收集使用者行為統計 (非常方便 可以自己拓展)
阿新 • • 發佈:2019-02-09
EventCollect
這是收集使用者行為統計的程式碼
reademe:
需求::
用於App統計使用者行為 。 實際上就是監控所有事件 並把事件 傳送到服務上去
要求: 可以監控使用者的所有行為,例如使用者誰(沒有登入的情況使用UUID),
進入那個頁面,進入的時間,在這個頁面操作了什麼(點選了那個按鈕,或者是點選了列表那個列),
離開頁面時間,以及其他統計資訊,例如版本號,手機系統版本,使用者當前網路,使用者位置,使用者單次使用App時長等
。使用者是否把App退到了後臺。使用者離開了哪一個頁面,離開時間。
解決方案:
重寫 dispatchTouchEvent負責分發事件 的方法在這裡 遍歷 所有節點 收集按下的x y 座標
在擡起的時候通過使用者動作的範圍查詢相應的View,並組成自己所需要的json 引數
功能 特點::
可以無埋點 只需要在baseActivity裡面 加上幾行程式碼就可以實現收集使用者
操作資訊的功能.
注意 :
統計上報介面採用分散式,不然所有資料都請求同一個介面,那麼日活大的情況下,
伺服器掛了 不僅無法收到資料,反而影響客戶端其他正常的功能
演示操作 gif圖有點大 :
我這裡演示 模擬請求成功和請求失敗的情況
在DateSender類中MySend 執行緒 中控制請求成功和失敗
第一種情況: 收集事件達到五次 上傳資料成功的演示:
第二種情況: 收集事件達到五次 上傳資料不成功的演示 存入本地:
第三種情況: 收集事件達到五次 上傳資料成功 並且把以前未上傳成功的資料一起上傳:
流程圖
上傳的json資料
{ "userData":{ "app_channel":"", "network":"NONE", "sysVersion":"6.0.1", "w_and_h":"1080*1920", "UUID":"ffffffff-89a3-f09e-115f-86b90033c587", "version":1, "phoneModel":"Redmi Note 3", "comeFrom":"az_wn", "user_loaction":{ "district":"朝陽區", "streetName":"三元橋", "province":"北京", "lat":"37.0", "lng":"37.0", "city":"北京" } }, "events":[ { "type":"app", "evenTime":1499672827876, "even":"in", "page":"MainActivity", "name":"首頁" }, { "evenTime":1499672844001, "name":"點選收集資料", "page":"MainActivity", "even":"click", "type":"button" }, { "evenTime":1499672844604, "name":"點選收集資料", "page":"MainActivity", "even":"click", "type":"button" }, { "evenTime":1499672845334, "name":"自定義事件", "page":"MainActivity", "even":"click", "type":"button" }, { "evenTime":1499672845338, "name":"nihao", "attributes":{ "item-category":"book" }, "page":"MainActivity", "even":"click", "type":"custum" } ], "session":{ "id":"1499672845390_1951868", "time":1499672845390 } }
last:
感謝github上各種收集事件專案給我的思路.
所以我也把自己寫的貢獻出來,希望能幫助到有需要的人