这是收集用户行为统计的代码
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 上各种收集事件项目给我的思路.
所以我也把自己写的贡献出来, 希望能帮助到有需要的人
项目 下载地址
http://download.csdn.net/detail/liudao7994/9904262
github 地址 https://github.com/liudao01/EventCollect
大家点个星星 支持下 你的支持 是我的动力
来源: http://blog.csdn.net/liudao7994/article/details/75463552