详见Git
WIKI地址
npm i sd-wxlittle-track-service@0.7.3 --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() // 满足小程序位置统计需求
}
}
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
fix msgChannel没记上
fix fromPage 丢失 bug版本[0.6.5 - 0.7.1]
commonControlArg中增加host参数可配 host: 'shuidichou.com'
修改默认 log api 为 url: 'http://log.shuidichou.com/log'
增加公共字段actionType: miniapp
修改使用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
onPageShow 增加一个参数 onPageShow({op: 'overrideOp', extInfo: {word: 'fakeWord'}}) 用于增加pageEnter统计数据
分享时自动拼上selfTagSourceId,并统计点击分享进入的selfTagSourceId
app.wpy => onLaunch 自动调用 tracker.track({op: 'start'})
onShareAppMessage 增加第三个参数 trackOptions
增加 api
onShareAppMessage
config 增加 getUserId
rename tracker.wraper 2 tracker.wrapper
修正readme
增加shareSourceId, userSourceId, msgChannel, shareTo 字段 api 增加tracker.onAppLaunch, tracker.onAppShow, tracker.onPageShow, tracker.promoteShare
修改readme格式
同步部分readme注释
增加onShow方法 用来统计页面 附带增加公共 参数 [pageName, fromPath, visitDv] 重写readme
修复import error
更新一波功能
fix bug
Possible Unhandled Promise Rejection: TypeError: Cannot read property 'then' of undefined
增加 commonControlArg 来自定义url
更新track-core version 0.0.5
修改body为数组
补充opTime
fix import err
抽离track-core
showLog 控制请求返回log是否显示