sd-wxlittle-track-service
v0.7.4
Published
sd 小程序 统计封装
Downloads
4
Readme
sd-track-demo
SD 小程序 统计封装
安装使用
npm i [email protected] --save
集成
初始化
创建servicies/trackService.js文件
import trackService from 'sd-wxlittle-track-service'
const tracker = trackService.wxLittleCreate({
showLog: false, // 是否打印统计成功 log
/**
用于从Storage中获取account Object的对应key
account Object 应该包含 account = {cryptoUserId, sdToken}
*/
accountKey: 'account',
commonParams: () => {
return {
biz: 'DEMO_TRACK', // 根据业务自行修改 后面可能会删掉
appType: -1, // 根据业务自行修改, 后面可能会删掉
appId: 'sd123456' // 根据业务自行修改
}
},
commonControlArg: {
host: 'shuidichou.com', // 默认为水滴筹
onHandleTrack: (trackData, controlArg) => { // 用于打印发出的统计log 可注释掉
const {
showInfo = true
} = controlArg
if (showInfo) console.info(trackData)
}
}
})
export default tracker
集成来源统计 与 位置统计
app.wepy中调用tracker.onLaunch(...args) src/app.wpy
import tracker from './servicies/trackService.js'
export default class extends wepy.app {
onShow(options) {
tracker.onAppShow(options) // 满足小程序来源统计需求
}
onLaunch(options) {
tracker.onAppLaunch(options) // 满足小程序来源统计需求
// tracker.loadLocation() // 满足小程序位置统计需求
}
onHide(){
// 切到后台 视为 跳转到了 名字为 fakePageBackground 的新页面
// 用于精细化统计
tracker.onAppHide()
}
}
集成页面统计 与 分享
1.第一种方式 mixin来实现 mixins/trackMixin.js
import wepy from 'wepy'
import tracker from '../servicies/trackService'
const TAG = 'track'
export default class TrackMixin extends wepy.mixin {
onShow() {
tracker.onPageShow()
log('pageName', tracker.currentPage)
log('fromPath', tracker.lastPage)
log('visitDv', tracker.visitDV)
log('mixin onShow')
}
onLoad() {
log('mixin onLoad')
wx.showShareMenu({
withShareTicket: true
})
}
}
function log (...args) {
console.log(TAG, ...args)
}
因为小程序并不支持全局mixin,所以还是需要在所有页面 加一下mixin配置 pages/index.wpy
import wepy from 'wepy'
import trackMixin from '../mixins/trackMixin'
export default class Index extends wepy.page {
config = {
navigationBarTitleText: 'index'
}
mixins = [trackMixin] // 引入mixin
onShareAppMessage(options) { // 满足分享统计需求
return tracker.onShareAppMessage({title: 'specialTitle'}, options, {
// shareParams: {haha: 'haha'}, // 分享出去的path后面拼上的参数
// trackParams: {k1: 'k1v'}, // 公共分享统计附加参数
// extInfo: {k1: 'k1v'} // 公共分享统计附加的扩展参数
})
}
}
2.第二种方式 不推荐,有复杂自定义需求可以考虑 在所有页面的onShow方法里调用tracker.onShow() pages/index.wpy
import wepy from 'wepy'
import tracker from '../servicies/trackService.js'
export default class Index extends wepy.page {
config = {
navigationBarTitleText: 'index'
}
onShow() {
tracker.onPageShow() // 满足小程序页面统计需求
}
onLoad() {
wx.showShareMenu({
withShareTicket: true
})
}
onShareAppMessage(options) {
return tracker.onShareAppMessage({title: 'specialTitle'}, options, {
// shareParams: {haha: 'haha'}, // 分享出去的path后面拼上的参数
// trackParams: {k1: 'k1v'}, // 公共分享统计附加参数
// extInfo: {k1: 'k1v'} // 公共分享统计附加的扩展参数
})
}
}
其他业务统计 调用
tracker.track({
op: 'login',
mobile: 'xxxxx'
})
更多详细api见demo 和源码
const targetAction = title => console.warn(`targetAction ${title} run`)
const action1 = title => {
targetAction(title)
tracker.track({op: title})
}
const action2 = tracker.wrap(
targetAction,
{op: 'action2Title'}
)
const action3 = tracker.wrap(
targetAction,
title => ({op: title})
)
const action4 = tracker.wrap(
targetAction,
title => ({op: title}),
{
showLog: true,
showInfo: true,
onHandleTrack: (trackData, {showInfo = false}) => {
if (showInfo) console.info(trackData)
}
}
)
// 已过时 请使用wrap方法
const action5 = tracker.wrapper({op: 'action5Title'})(targetAction)
const action6 = tracker.wrapper(title => ({op: title}))(targetAction)
const action7 = tracker.wrapper(title => ({op: title}), {showLog: true})(targetAction)
const action8 = () => {
wx.navigateTo({
url: 'info'
})
}
const itemList = [
{title: 'test1', action: action1},
{title: 'test2', action: action2},
{title: 'test3', action: action3},
{title: 'test4', action: action4},
{title: 'test5', action: action5},
{title: 'test6', action: action6},
{title: 'test7', action: action7},
{title: 'testJumpInfoPage', action: action8},
{title: 'testJumpWepyDemoPage', action: () => wx.navigateTo({url: 'wepydemo'})}
]
说明
扩展
微信小程序统计
默认注入公共参数
不需要再传了,其他参数见wiki
| 分类 | 名称 | 类型 | 描述 | 备注 | | --- | --- | --- | --- | --- | | | version | string | 日志版本号 | 1.0 | | | opTime | long | 事件触发时间点(毫秒) | | | | channel | int | scene | onLaunch => option.scene 场景值| | | platform | string | 平台,如ios、android、wx、mp? | 小程序是mp| | | actionType | string | 小程序值固定为: actionType: 'miniapp', | | | | latitude | double | scene | | | | longitude | double | scene | | | | visitId | string | 当前会话唯一随机字符串(session id) | | | | visitDv | string | 当前会话唯一随机字符串(session id) | | | | pageName | string | | | | | fromPath | string | | | | | shareSourceId | string | | | | | userSourceId | string | 点击别人分享进入小程序的那人用户id | | | | shareSourceId | string | 点击别人分享进入小程序的那条分享id | hash.default| | | selfTagSourceId | string | 点击别人分享进入小程序的那人的selfTag | hash.default| | | shareTo | int | | | | | msgChannel | string | | | | | authorizationV2 | string | | | | | selfTag | string | | |
extInfo
| 分类 | 名称 | 类型 | 描述 | 备注 | | --- | --- | --- | --- | --- | | | shareAction | int | [1(页面按钮), 2(右上角菜单)] | | | | id | string | 当前分享id | |
分享url参数注入
| 分类 | 名称 | 类型 | 描述 | 备注 | | --- | --- | --- | --- | --- | | | userSourceId | string | 当前用户id | 默认取 wx.getStorageSync('userId')| | | shareSourceId | string | 当前分享的id | hash.default| | | selfTagSourceId | string | 当前用户selfTag | hash.default|
注意
v0.6.5开始
- commonParams 里面不要放selfTag 库本身已经接管selfTag 若想获取可以调用tracker.getSelfTag()
- commonParams 里面不要放authorizationV2 库本身从account里面取了 如需自定义可以覆盖或者 config中加入getToken func
更新日志
v0.7.4
新增 tracker.onAppHide() 切到后台 视为 跳转到了 名字为 fakePageBackground 的新页面 用于精细化统计
v0.7.3
fix msgChannel没记上
v0.7.2
fix fromPage 丢失 bug版本[0.6.5 - 0.7.1]
commonControlArg中增加host参数可配 host: 'shuidichou.com'
v0.7.1
修改默认 log api 为 url: 'http://log.shuidichou.com/log'
v0.7.0
增加公共字段actionType: miniapp
v0.6.5
修改使用cryptoUserId 替换userId config 增加 accountKey字段 用于获取 account: {cryptoUserId}
- commonParams 里面不要放selfTag 库本身已经接管selfTag 若想获取可以调用tracker.getSelfTag() 或tracker.config.getSelfTag()
- commonParams 里面不要放authorizationV2 库本身从account里面取了sdToken 如需自定义可以覆盖或者 config中加入getToken func
- config中原有的 getUserId 可以删除 默认取的account 里面的 cryptoUserId
v0.6.4
onPageShow 增加一个参数 onPageShow({op: 'overrideOp', extInfo: {word: 'fakeWord'}}) 用于增加pageEnter统计数据
v0.6.3
分享时自动拼上selfTagSourceId,并统计点击分享进入的selfTagSourceId
v0.6.2
app.wpy => onLaunch 自动调用 tracker.track({op: 'start'})
v0.6.1
onShareAppMessage 增加第三个参数 trackOptions
v0.6.0
增加 api
onShareAppMessage
config 增加 getUserId
v0.5.1
rename tracker.wraper 2 tracker.wrapper
v0.5.0
修正readme
v0.4.3
增加shareSourceId, userSourceId, msgChannel, shareTo 字段 api 增加tracker.onAppLaunch, tracker.onAppShow, tracker.onPageShow, tracker.promoteShare
v0.4.2
修改readme格式
v0.4.1
同步部分readme注释
v0.4.0
增加onShow方法 用来统计页面 附带增加公共 参数 [pageName, fromPath, visitDv] 重写readme
v0.3.1
修复import error
v0.3.0
更新一波功能
v0.2.3
fix bug
Possible Unhandled Promise Rejection: TypeError: Cannot read property 'then' of undefined
v0.2.0
增加 commonControlArg 来自定义url
v0.1.9
更新track-core version 0.0.5
v0.1.8
修改body为数组
v0.1.7
补充opTime
v0.1.5
fix import err
v0.1.4
抽离track-core
v0.1.3
showLog 控制请求返回log是否显示