troila-mobile-tracer

埋点统计

Usage no npm install needed!

<script type="module">
  import troilaMobileTracer from 'https://cdn.skypack.dev/troila-mobile-tracer';
</script>

README

行为统计埋点库

pipeline status coverage report

用来对用户的操作行为进行埋点统计,支持离线存储和实时上报。

之前版本的代码使用 1.x.x。新版本使用 2.x.x,通过 yarn add @troila/tracer@latest 安装最新版

安装

CDN

暂时还不支持 UMD 模式。

当前只有两种打包方式:commonjs 和 es6 module,后续版本会增加对 UMD 模式的支持。

npm

使用 npm

$ npm install @troila/tracer

使用 yarn(推荐)

$ yarn add @troila/tracer

初始化

默认的导出 tracer 是一个对象,需要调用 init 进行初始化设置。在项目入口文件中进行初始化一次

import tracer from "@troila/tracer";

tracer.init({
  debug: false, // 是否开启调试模式
  appKey: "test", // app标识
  appVersion: "1.2.3", // 应用版本号
  env: "dev", // 环境
  delay: 1000, // 延迟上报时间,0 为立即上报
  beforeSend: function(report) {
    console.log(report);
  },
  afterSend: function(result) {
    console.log(result);
  },
  userid: "", // 当前登录的用户id
  maxEvents: 100, // 离线最大记录条数,默认 100 条
  offlineLog: true // 是否开启离线记录
});

示例

import tracer from "@troila/tracer";

// 初始化
tracer.init({
  appVersion: "1.0.0",
  appKey: "test",
  env: "dev",
  channel: "play store",
  debug: true
});

tracer.push({
  id: "login"
});

tracer.push({
  id: "login",
  category: "event",
  desc: "用户首次登录"
});

配置项

属性 类型 是否必填 默认值 说明
appVersion string - 应用版本号
appKey string - 应用标识
debug boolean false 是否开启调试模式
delay number 0 上报延迟的毫秒数,0 为立即上报
env string "dev" 环境 "dev", "test", "release"
channel string "" 渠道
beforeSend function - 发送之前执行的回调函数
afterSend function - 发送之后执行的回调函数
userid string "" 当前登录的用户 id
offlineMaxNum number 100 离线存储的最大值,超过最大值后则上报到服务器
offlineLog boolean true 是否开启离线存储

API

tracer.init(option)

初始化。

如果未初始化而调用了后面的 api,则抛出异常。

tracer.setUserid(userid)

设置当前登录用户 ID。在 SDK 初始化的时候 userid 是非必传项,如果当用户登录后需要统计当前登录用户,可以使用此 API 设置 userid。

tracer.push(action)

记录用户行为。

参数

action

属性 类型 是否必填 默认值 说明
id string - 动作id
name string 默认为id 动作名
category string 'event' 动作分类
desc string - 描述
ext string - 附加信息
tags string[] - 标签,用于给行为分类,方便以后的统计
  • 如果 name 没有设置,则默认使用 id 作为动作名。
  • 如果 category 没有设置,则默认使用 'event'

内置有 3 种行为:eventeventStarteventEndevent 为瞬时行为,eventStarteventEnd 结合使用用来统计具有持续时间的行为。

tracer.nav(navigation)

记录页面跳转行为。

参数

navigation

属性 类型 是否必填 默认值 说明
id string - 页面id
name string 默认为页面id 页面名
from string - 跳转来源
desc string - 描述
ext string - 附加信息
tags string[] - 标签,用于给行为分类,方便以后的统计
  • 如果 name 没有设置,则默认使用 id 作为页面名。
  • 如果没有页面来源,from 传空字符串。

tracer.reportOffline()

上报离线日志。

如果不调用此方法,则用户日志条数达到 offlineMaxNum 了会自动上报。

开发

此项目使用 typescript 开发。

日志格式

{
  "timestamp": "2017-04-24T09:36:01.000Z",
  "id": "login",
  "name": "login",
  "category": "event",
  "ext": "",
  "userid": "",
  "desc": "",
  "tags": [...]
}

上报格式

{
  "appVersion": "1.2.3",
  "env": "release",
  "channel": "play store",
  "uniqueId":"c3a3bd65caf0015c",
  "logs": [
    {
      "timestamp": "2017-04-24T09:36:01.000Z",
      "id": "clickBuy",
      "name": "点击购买",
      "category": "event",
      "ext": "",
      "userid": "",
      "desc": "",
      "tags": ["a", "b"]
    },
    {
      "timestamp": "2017-04-24T09:36:01.000Z",
      "id": "login",
      "category": "event",
      "ext": "",
      "userid": "",
      "desc": "",
      "tags": ["a", "b"]
    },
    {
      "timestamp": "2017-04-24T09:36:01.000Z",
      "id": "login",
      "name": "登录",
      "category": "navigation",
      "from": "",
      "ext": "",
      "userid": "",
      "desc": "",
      "tags": ["a", "b"]
    },
    {
      "timestamp": "2017-04-24T09:36:01.000Z",
      "id": "view",
      "name": "查看",
      "category": "navigation",
      "from": "main",
      "ext": "",
      "userid": "",
      "desc": "",
      "tags": ["a", "b"]
    }
  ]
}

TODO

使用 lerna 将每个功能放到单独的 npm 包进行管理。

例如:

  • @tracer/core
  • @tracer/storage
  • @tracer/storage-memery
  • @tracer/storage-localstorage
  • @tracer/storage-indexeddb
  • @tracer/storage-xxxxxx
  • @tracer/reporter
  • @tracer/reporter-fetch
  • @tracer/reporter-sendbeacon
  • @tracer/reporter-axios
  • @tracer/reporter-xxxxx

luobo-im-react-native 说明文档

现地址:http://172.26.1.194/troila-cloudvideo/luobomeeting/app/luobo-im-react-native

原地址:http://172.26.1.194/troila-mobile/luobo-im-react-native~~


发布流程

  1. 登录npm账号

    登录npm淘宝镜像

    npm login --registry http://registry.npmjs.org
    

    账号:troila_mobile

    密码:dfqwe5335458

    邮箱:yulianlin@troila.com

  2. ts转js文件

    执行下面命令

    tsc --p tsconfig.json
    

    如果assets文件下有文件更新,需要手动copy过去

  3. 修改version

    版本管理,修改version版本号,基本原则如下:

    主版本号(Major):当你做了不兼容的API修改

    次版本号(Minor):当你做了向下兼容的功能性新增

    修订号(Patch):当你做了向下兼容的问题修正

  4. 发布

    npm publish
    
  5. 检查

    访问地址 https://npm.taobao.org/package/troila-mobile-tracer*, 查看Current Tags 是否为最新版本,如果不是,需要手动同步

    a. 手动同步

    手动同步

    b. 同步成功

    同步成功

  6. 通知业务童鞋去拉去最新版本啦