Tracker

Project Url: ttpai/Tracker
Introduction: Tracker 是 Android 上的一个用户行为跟踪框架,根据预先订阅的事件链,以观察者模式监听用户的行为,当用户的行为与订阅的一样时,通知给订阅者。
More: Author   ReportBugs   
Tags:

Tracker 是 Android 上的一个用户行为跟踪框架,根据预先订阅的事件链,以观察者模式监听用户的行为,当用户的行为与订阅的一样时,通知给订阅者。
基于此框架,你可以轻松实现 android 上不侵入业务的逻辑埋点。特别是长路径的埋点更有优势。

没有看明白?

没关系,直接说明 traker 的应用场景。“埋点”,当我们的 app 到一定阶段时,一定会有埋点需求,例如在某按钮点击后统计埋点,进行上报,给到产品,可以统计功能的使用度。还有页面跳转 等等……当然还有复杂的埋点,如页面的多级跳传,A->B->C 。或者多个入口进同一页面的分别埋点 A->C, B->C。在埋点服务上,我们一般会选择第三方的服务,如友盟等……,但是埋点代码还是需要我们来写到指定的地方的。这种埋点称为代码埋点。开发人员需要把埋点代码写到业务代码中。在埋点多了后,在重构时,会容易不小心删除埋点,而且也不好管理。当然还有全埋点,也就是在所有的点击事件或页面跳转的地方插入埋点代码,然后一起上报,由专门分析人员从中分析数据。但是这样会造成上传数据量过大,有时候无法精准的统计到某个功能。基于此背景,我们希望能做到按需埋点,但是又能最大程度的不侵入业务代码。使埋点代码集中放到一起管理,而且还要能实现复杂的埋点。所以 Tracker(追踪者) 就是这样产生的。

如何接入?

在 project 中的 build.gradle 中

buildscript {
    dependencies {
        ...
        classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4'
    }
    allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
    }
 }

在 app 的 build.gradle 中

 apply plugin: 'com.hujiang.android-aspectjx'

 dependencies {
     implementation 'com.github.ttpai:Tracker:1.0.1'
 }

在 application 中注册

@Override
public void onCreate() {
    super.onCreate();
    Track.initTrack(getApplication());
}

如何使用?

监听 AActivity 跳转到 某页面事件:

Track.from(AActivity.class).to(BActivity.class).subscribe(new OnSubscribe<Intent>() {
    @Override
    public void call(Intent intent) {
        Log.d(TAG, "A->B");
    }
});

监听 AActivity 中的某 view 被点击:

  Track.from(AActivity.class).viewClick(R.id.button).subscribe(new OnSubscribe<View>() {
      @Override
      public void call(View view) {
          Log.d(TAG, "A.click(R.id.button)");
      }
 });

更多

由于 AOP 是基于 aspectjx ,在此感谢 aspectjx 项目的贡献
更多文档
Tracker Api 操作符
Android Tracker 原理

Apps
About Me
Google+: Trinea trinea
GitHub: Trinea