• Stars
    star
    135
  • Rank 269,297 (Top 6 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created almost 7 years ago
  • Updated almost 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Android App 无痕迹全埋点

TamicAppMonitoring

Android App 无痕迹全埋点方案

本次基于的埋点框架: https://github.com/Tamicer/SkyMonitoring

背景

目前统计已经是一个产品常见的需求,尤其在业务模式探索的前期,埋点功能更是必不可少的功能,下面将介绍最简单的app全埋点方案!

什么是数据埋点

数据埋点是一般项目采用统计UV,PV,Action,Time等一系列的数据信息,对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。

为什么要数据埋点

产品或运营分析人员,基于埋点数据分析需要,对用户行为的每一个事件进行埋点布置,并通过SDK上报埋点的数据结果,进行分析,并进一步优化产品或指导运营。

数据埋点包括哪些

这里有我之前写的一篇文章App优质精准的用户行为统计和日志打捞方案

地址:http://blog.csdn.net/sk719887916/article/details/50931485

数据埋点采集模式

##自动埋点

App通过代理,调用Sdk相关API,进行的将数据埋点上报的模式.

无痕埋点

无需通过专门提供代理类,直接由sdk提供相关接口,或者通过编译工具,预编译替换代码等,直接由sdk全部负责采集上报

可视化埋点

可视化埋点指 前端或者app端基于dom 元素和控件所精准自动埋点的上报的方案。

对比分析:

自动埋点:

缺点: 1 开发人员工作量大,需对业务提供唯一的ID,来区分每一个业务,无论是否提供sdk代理,业务开发人员至少需要多次调用sdk相关API.

2 业务人员和产品沟通成本提高,需要对具体业务制定相关的业务标识,以便于产品分析和统计

优点:

产品运营工作量少,对照业务映射表,就能分析出还原相关业务场景, 数据比较精细,无需大量的加工和处理。

无痕埋点

缺点:

1 sdk开发人员需提供一套无痕埋点技术成品,包括能正确获取PV,UV,ACtion,TIme等多项统计指标。前期技术投入大。

2 数据量大,需后端落地进行大量处理,并由产品进行自我还原业务员场景。 无论采用智能系统平台,还是通过原生的数据库查询数据,都是一种大量的分析精力。

优点:

1 开发人员工作量小,无需对业务标识进行唯一区分,由sdk自动进行生成,ID规则由sdk和产品进行约定。减少业务人员的沟通成本和使用步骤。

2 数据量全面,覆盖面广,产品可按需进行分析。做到毫无遗漏。

3 支持动态页面和局部动效的统计。

可视化埋点

优点:

1 相对数据量而言 相比较于无埋点相而言对较低,但是这个可视化元素的识别技术是客户端或者前端所要实现的,唯一id生成也无需客户端去自定义规则,这套生成规则由相关产品在自动化工具的情况下生成配置表,下发到客户端,再由客户端按坑就班到相关界面去实现。

2 数据量相对精确

缺点:

1 可视化工具的平台的搭建,静态页面的元素识别都需要额外开发。 2 动态效果可能会遗漏。

#实现方案:

埋点需求可参考我之前的文章:

App优质精准的用户行为统计和日志打捞方案

App打造自定义的统计SDK

自动埋点实际上也是,提供一个base类,由业务类继承base类,在base里面做相关统计api调用, 可参考我的github:https://github.com/Tamicer/SkyMonitoring

核心实现:

以android作为列子:

提供自动遍历元素 并能扑捉点击的控件的activity, 并能在生命周期统计pv的打开和关闭,调用我开源的SkyMonitoring的对应的api.

复写dispatchTouchEvent(MotionEvent ev) 事件函数,确定被点击的view的相关位置,并生成唯一的ID,企业级app都是从服务器下发对应的ID,对应页面去调用埋点sdk Api,实现事件行为TcStatInterface.initEvent(path.viewTree);。

这个path就是view的路径,页面的深度路径,包括打开和关闭sdk在SkyMonitoring中已能自动获取。

本次demo是id生成规则是按照 :包名+ Activity+ Viewgroup+ Layout+ view + View index + viewID实现的。

业务直接去继承TamicActivity即可,就能去实现所有可视化view的埋点功能。

App项目集成使用,初始化url和相关统计配置字典,这个字典可以从服务器下发下来,我本次只是通过简单的本地文件做实践。

    public class StatAppliation extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        // you app id
        int appId = 21212;
        // assets
        String fileName = "my_statconfig.json";
        String url = "https://github.com/Tamicer/TamicAppMonitoring";
        // init statSdk
        TcStatInterface.initialize(this, appId, "you app chanel", fileName);
        TcStatInterface.setUrl(url);
        TcStatInterface.setUploadPolicy(TcStatInterface.UploadPolicy.UPLOAD_POLICY_DEVELOPMENT, TcStatInterface.UPLOAD_TIME_ONE);
     }
    }

可视化也可以通过aop插桩实现,但是实现起来对代码的入侵性太高,这里不做介绍。

Aop 插桩对碎片化fragment支持比较好。对这块的介绍可看我以前在公众号推送的一篇文章 :AOP编程之AspectJ实战实现数据无痕埋点

可参考: https://www.baidu.com/link?url=FniQOFyj1pd6O5Fz6viRMN3ZgexIKAk7SQ08EgpBU9cHHMszPlm2jRXJ21mkomtY&wd=&eqid=ffc87acf0005fd18000000045a5d98dd

项目地址:

github:https://github.com/Tamicer/TamicAppMonitoring

Tamic 原创 http://blog.csdn.net/sk719887916/article/details/79074556

第一时间获取我的技术文章请关注微信公众号!

开发者技术前线

More Repositories

1

Novate

A safety client by Https for android, (Android网络框架,基于Retrofit和RxJava打造的链式网络库, 支持okhttp的调用风格,又兼容Retrofit API,并支持rxJava链式操作)
Java
1,431
star
2

SkyMonitoring

Android Static FrameWork(天眼SkyMonitoring), 埋点统计SDK: 支持Activity路由途径统计,自定义事件统计,Crash日志统计。
Java
556
star
3

RetrofitClient

基于Retrofit2.x和Rxjava2.x封装的请求工具类(内含Retrofit2.x & rxjava1.x)
Java
543
star
4

FastDownloader

基于Okhttp, 结合Retrofit,使用Okio ,简化处理I/O操作,加入多种设计模式,实现基于链式的android平台多线程下载利器!
Java
421
star
5

JsWebView

基于JsBridge封装的高效自带加载进度条的WebView
Java
174
star
6

FocusView

支持Android TV和电视盒子遥控器移动翻页,左右移动的FocusVIew
Java
121
star
7

TvFrameWork

TV_Framework 支持最新TV的框架,支持最新MD设计
Java
81
star
8

JsBridge-Android

Java 和 js互通框架
Java
75
star
9

TvResource-Android

Android Tv项目资源收集
66
star
10

IOS_DragGridView

仿iphone桌面,支持实时交换,长按抖动效果,删除条目,并拖动建立文件夹。
Java
53
star
11

MouseView_TV

Support remote control mouse or TV remote control into the mouse(支持遥控器操作的的鼠标和遥控器做鼠标来用),
Java
32
star
12

Autoinstall

免root自动安装APK,
Java
25
star
13

ChatMomentDemo

微信朋友圈动态,动态显示Gridviewd的条目大小,滑动查看大图,并双指缩放图片。
Java
25
star
14

PluginLoader

基于PluginFramwork的插件加载器,支持APK动态加载
Java
22
star
15

Loader

Loader实例使用, 轻松异步读取大文件
Java
15
star
16

Tamic_Retrofit

user-defined Retrofit. 剖解Retrofit源码,实现简单自定义的Retrofit的框架
Java
15
star
17

ApiMvp

Java
13
star
18

LineGridView

带分割线的GridView
Java
11
star
19

ListWidget

ListWidget sample
Java
9
star
20

FilterBar

Android 自定义多用途筛选框
Java
8
star
21

MvpCase

Java
5
star
22

JavaDaily

每日一题,打好基础,冲高薪
5
star
23

Tamicer.github.io

HTML
3
star
24

autoApk

gradle多渠道 多模块,多版本,多功能打包方案
Java
2
star
25

GlideHelper

Glide wrapper
Java
2
star
26

Javajiagoushi

进阶java大佬的路上 不迷茫
1
star
27

BaiduMap

Java
1
star
28

AIDaily

机器学习,每日一题
1
star
29

WebDaily

前端试题,每日一道
1
star