Skip to content

Tamicer/SkyMonitoring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sky Monitoring 天眼

Android StaticFrameWork

自定义统计SDK, 完全放弃第三方平台,让app拥有自主的数据统计功能

支持Activity统计

自定义事件统计

APP启动退出唤醒自动统计

crsah日志统计

客户端SDK功能概述

在使用统计服务前,开发者先要拿到本身APPID。其中AppId是客户端的身份标识,在客户端SDK初始化时使用。然后下载最新Library的SDK压缩包,其中包括了Android SDK和AndroidDemo。Android版SDK以Module形式提供, 你的APP只需要添加少量代码和配置,即可完成接入TcInterface统计服务。

统计服务Android

SDK所有的接口都封装在TcStatInterface抽象类的静态方法中,主要功能接口请参考第3节API说明。应用在启动时,需要调用initialize方法来初始化统计服务,之后便可按照统计的业务需求,调用统计数据上报接口上报统计打点。 SDK提供了接口给开发者来设置向统计统计服务器上报统计数据的策略,开发者可以在任意时候调用修改策略。客户端SDK上报的数据包括默认事件统计、应用全局(AppAction)统计(用于统计app的唤醒、打开关闭频率、使用时长等)、页面访问统计(Page)和自定义事件统计(Event)。 统计SDK提供app的崩溃日志收集功能(统计SDK2.0 将会新增)。功能开启后,对于app在使用过程中的崩溃,SDK将自动采集崩溃日志,并上传到统计后台;统计后台会根据app版本,对崩溃进行聚合、展示。

SDK使用配置

本节主要介绍使用统计SDK前的准备工作,开发者也可以参照SDK中的demo来配置。

2.1. 配置AndroidManifest.xml文件 SDK支持的最低安卓版本为2.2。

     <uses-sdk  android:minSdkVersion="8"/>

统计服务需要的权限列表 权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

对应的5种权限,用途如下:

网络访问权限,需要联网以便于向小米统计服务端上报统计数据。 查看网络状态,用于根据不同的网络环境,选择相应的上报策略。同时也需要上报当前的网络环境用于后台统计展示。 读取手机状态和身份,用于获取设备的唯一标识,为当前设备生成一个唯一设备ID。 查看Wifi状态权限,用于获取mac地址,生成设备唯一标示。 获取用户地理位置信息,用于获取精准确的地理位置,变于统计用户分布情况。

2.2. 初始化统计服务 应用启动时,需要调用统计SDK中的初始化方法,传入appID(目前已定义好相关APPID,参见下表)等身份验证参数和应用对应的渠道号。在调用其他统计服务相关API前,必须调用本方法初始化统计服务, 建议您在程序的Application的onCreate中初始化Tamic统计服务。传入即可。

APP常规数据统计

本节主要介绍如何设置数据上报策略,如何记录页面访问行为和用户自定义事件。本节也介绍了通过集成测试模块验证SDK是否集成成功的方法。

3.1. 数据上报策略

统计服务SDK会先把数据记录缓存在本地,然后根据开发者设定的数据上报策略,触发上报流程。SDK中提供了一系列数据上报策略供开发者选择,这些策略包括:

UPLOAD_POLICY_REALTIME 实时上报。每当有一条新的记录,就会激发一次上报。

UPLOAD_POLICY_WIFI_ONLY 只在WIFI下上报。当设备处于WIFI连接时实时上报,否则不上报记录。

UPLOAD_POLICY_BATCH 批量上报。当记录在本地累积超过一个固定值时(100条),会触发一次上报。

UPLOAD_POLICY_WHILE_INITIALIZE 启动时候上报。每次应用启动(调用initialize方法)时候,会将上一次应用使用产生的数据记录打包上报。 UPLOAD_POLICY_INTERVAL 指定时间间隔上报。开发者可以指定从1分钟-60天之间的任意时间间隔上报数据记录。需要注意,由于SDK并没有使用安卓的实时唤醒机制,采用Handler,因此采用此策略上报,SDK做不到严格的遵守开发者设定的间隔,而会根据应用数据采集的频率和设备休眠策略,会有一定的偏差。

UPLOAD_POLICY_DEVELOPMENT 调试模式。使用此策略,只有开发者手动调用一个接口才会触发上报,否则在任何情况下都不上报。SDK中提供了一个reportData()方法用于手动触发。这种策略主要用于开发者调试时候可手动控制上报时机,便于做数据对比。

统计服务的本地缓存最长会永久保存,只要在数据有效期内上报流程被触发,就会将本地之前没上报成功的所有数据打包ZIP格式上报。如果数据上报成功,则会把已经成功的数据从本地删除。 默认的数据上报策略是UPLOAD_POLICY_INTERVAL,默认的上报时间间隔是三分钟(非wifi是30分钟) 现在也只有默认策略有效。

设置上报策略的代码示例如下:

    // 设置策略模式  第一个是策略模式   ,第二是是时间(单位/分)
   TcStatInterface.setUploadPolicy(TcStatInterface.UploadPolicy.UPLOAD_POLICY_INTERVA, 3);

API说明

--

4.1. API细节

请具体看demo 注释

集成步骤

5.1 依赖项目

Gradle:

root:

  repositories {
      maven { url "https://jitpack.io" }
      jcenter()
  }

Module:

     dependencies {
      compile 'com.tamic:StatInterface:2.1'

    }

5.3 加入权限

见2.1的说明。

5.4 初始化

Application的onCreate():

     // assets
    String fileName = "stat_id.json";

    String url = "http://www.baidu.com";
    
    // init statSdk
    TcStatInterface.initialize(this, appId, "you app chanel", fileName);
    // set upload url
    TcStatInterface.setUrl(url);

  见Wiki说明 参见demo

5.5 AppAction

此统计包含是三个类型

  1. App启动

    TcStatInterface.recordAppStart();
    
  2. App退出

    TcStatInterface.recordAppEnd();
    
  3. APP唤醒

无需开发者上层使用,sdk会自动打点记录

5.6 事件统计

  记录某个动作,并包含事件参数时,

            findViewById(R.id.id_button).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                            TcStatInterface.onEvent("main", "onlick", "send data");
                            //reportData
                            TcStatInterface.reportData();

                    }

            });


            findViewById(R.id.id_button2).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                            // test
                            HashMap<String, String> map = new HashMap<>();
                            map.put("id1", "xxx");
                            map.put("id2", "yyy");

                            TcStatInterface.onEvent("openNext", map);

                            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                            startActivity(intent);

                    }

            });

5.7 Activity统计

 统计activity启动时间,从哪个地方跳过来,业务开发者可以自己写一个base,让其他activity继承Base就行,就可完成自动搜集功能        

   public class BaseActivity extends Activity {

    @override
    protected void onResume() {
      super.onResume();
      //可以直接传this
      TcStatInterface.recordPageStart(“ID”);
    }

     protected void onPause() {
       super.onPause();
        TcStatInterface.recordPageEnd();
     }
   }

注意

目前服务端代码需要你自我实现,数据结结构按客户端数据Model实现即可。收到数据落地到数据库,需要查看的时候即可查看,如果后端有可视化界面,那么更好不过。

 客户端:搜集,存储,上报。  服务端:接受数据,落地数据库,最后做大数据处理。

作者:  FrameWork @Tamic : http://www.jianshu.com/p/cd83e81b78aa

crash:@jianglei0716

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages