juexiao-stat-sdk

juexiao statitics sdk with javascript

Usage no npm install needed!

<script type="module">
  import juexiaoStatSdk from 'https://cdn.skypack.dev/juexiao-stat-sdk';
</script>

README

JueXiao Statistics SDK With JavaScript

Build Status semantic-release npm

安装

npm install juexiao-stat-sdk

or

yarn add juexiao-stat-sdk

注意:该 sdk 只支持 web/h5微信小程序 环境使用,两种环境完全独立。该 sdkumd 格式打包,同时支持 importrequire 导入,推荐使用 es6import 语法按需引入不同环境对应的模块。

sdk 包含两个模块: BrowserStatSDKMiniStatSDK, 其中,BrowserStatSDK只适用于 web/h5 环境,MiniStatSDK 只适用于微信小程序环境,使用时请注意区分。

在 vue 项目中使用:

main.js 中引入

import { BrowserStatSDK } from 'juexiao-stat-sdk'
const stat = new BrowserStatSDK({
  id: 'test-id', // 这里填写每个项目分配的 project_id
  source: 'pc', // 可选值 pc | wechat | h5
  debug: true, // 是否开启调试,默认false(一般使用 process.env.NODE_ENV != 'production')
  userId: 123, // 用户id 初始化sdk前,如果用户已有登录信息,需要传入userId (一般使用 store.state.userInfo.id)
  appSource: 'h5商城'// 小程序或h5应用标识(pc端可不传,小程序和h5端必传)
})
// 全局注册
Vue.prototype.$stat = stat
...

在需要埋点的地方使用,如 index.vue

...
methods: {
  btnClick() {
    this.$stat.track('btn-click')
    // 或者传入当前事件需要的一些自定义属性
    this.$stat.track('btn-click', {
      ...
    })
  }
}

在微信小程序中使用:

登录微信公众平台(mp.weixin.qq.com),在 开发 → 开发设置->服务器域名 找到「 request 合法域名」,点击「修改」,将 sdk.juexiaotime.com 添加 request 合法域名中。

sdk.juexiaotime.com

注意: v1.4.4 及以后的版本支持地理位置获取,由于小程序限制,需要在小程序中加入获取地理位置的配置信息。

使用 uni-app 的小程序在 manifest.json 文件中配置:

"mp-weixin": {
  "permission":{
    "scope.userLocation": {
      "desc": "授权你的位置信息以获得更好的服务"
    }
  }
}

在入口文件 app.js 中引入,

import { MiniStatSDK } from 'juexiao-stat-sdk'
const stat = new MiniStatSDK({
  id: 'test-id', // 这里填写每个项目分配的 project_id
  source: 'pc', // 可选值 pc | wechat | h5
  debug: true, // 是否开启调试,默认false(一般使用 process.env.NODE_ENV != 'production')
  userId: 123, // 用户id 初始化sdk前,如果用户已有登录信息,需要传入userId (一般使用 store.state.userInfo.id)
  appSource: '小程序-速记本'// 小程序或h5应用标识 (pc端可不传,小程序和h5端必传)
})
wx.$stat = stat

在需要埋点的地方使用,如首页下的 index.js 文件

...
methods: {
  btnClick() {
    wx.$stat.track('btn-click')
    // 或者传入当前事件需要的一些自定义属性
    wx.$stat.track('btn-click', {
      ...
    })
  }
}

API

login

为了保证数据准确性,当用户 登录 成功后,必须调用 login 方法,主动更新用户 id

stat.login('loginid')
logout

为了保证数据准确性,当用户 退出登录 成功后,必须调用 logout 方法,主动更新用户登录状态

stat.logout()
trackSignUp

为了保证数据准确性,当用户 注册 成功后,必须调用 trackSignUp 方法,用于绑定登录 id和匿名 id 之间的操作

stat.trackSignUp('loginid')
track

常规数据上报

stat.track('eventname', {
  // 当前事件需要的一些自定义属性
})
profileSet

该方法只在用户更新 用户信息 时调用。

stat.profileSet({
    sex: '男'
    age: '18'
})
profileSetOnce

该方法只在 注册基本信息成功 时调用,注意并非是 注册成功,而是注册成功后,绑定设置相关用户信息时调用

stat.profileSetOnce({
    sex: '男'
    age: '18'
})

差异 API

为了提高数据的准确性,小程序在每次 启动时 需要调用 login() 方法换取 code,然后从服务端获取  openid和  unionid。注意:openid 一定能获取到,unionid 在用户从未登录授权过公众号相关应用时无法获取

获取成功后,需要调用以下两个差异 API

setOpenid

微信小程序中,默认情况下使用 UUID 作为用户标识,但删除小程序的操作,会导致 UUID改变,因此,为了数据的准确性,建议获取并使用 openid

调用该方法之后,会将 UUID替换为 openid 的值,在用户未登录的情况下,后续上报都会采用 openid的值

stat.setOpenid('openid')
setUnionid

在能获取到 unionid 的情况下,需要主动设置 unionid

stat.setUnionid('unionid')