vue2 | vue3 | |
---|---|---|
app | ✅ | ❌ |
小程序 | ✅ | ❌ |
H5 | ❌ | ❌ |
安装埋点SDK
npm install @llius/uniapp-collect-sdk
安装埋点SDK的loader
npm install @llius/uniapp-inject-loader
配置
vue.config.js
文件
const path = require('path')
const insetLoader = path.resolve(__dirname, '../node_modules/@llius/uniapp-inject-loader/index.js')
module.exports = {
configureWebpack: {
module: {
rules: [
{
test: /\.vue$/,
use: {
loader: insetLoader,
options: {
VUE_APP_PLATFORMS: ['app-plus'],
wxbCollectLogs: true,
// titleSelector: 自定义标题的选择器
titleSelector: '.-nav-title-text'
}
}
}
]
}
}
}
实例化SDK,需要传入Vue实例
// file utils/logs.js
import Vue from 'vue'
import { CollectLogs } from '@llius/uniapp-collect-sdk'
export const collectLogs = new CollectLogs(Vue)
初始化SDK
// file main.js/xxx.vue
import { collectLogs } from '@/utils/logs.js'
collectLogs.init({
sourcePlatform: '', // 平台类型
uniqueId: '', // 用户唯一标识
project: '', // 项目名称
serverUrl: 'https://example.com/api',
customFields: { // 自定义字段,解释见下方
role: {
value: '置业顾问',
},
tel: {
key: 'phone'
},
userInfo: {
key: 'userInfo'
},
},
isShowLog: false, // 是否显示console输出
isOnPageLifecycle: true, // 是否监听页面生命周期
isOnTapEvent: true // 是否开启点击事件监听
})
customFields
字段解释
- role - 自定义字段名称
- 用于上报时,作为字段名称
- 如果获取的数据为对象,则忽略该字段
- key - 自定义字段key值,用于 uni.getStorageSync(key) 获取动态字段数据
- 如果获取的数据为对象,则会将该对象的所有字段作为自定义字段上报
- 如果获取的数据为非数组,则会将该数据作为自定义字段上报
- value - 自定义字段值
- 直接填写值,会将该值作为自定义字段上报
- 取值以key为更高优先级,如果key存在,则会以key为准,否则会以value为准
init
用于初始化SDK
this.$collectLogs.init({
...
})
customReport
自定义事件上报
- 第一个对象参数
- eventType(必填) - 事件名称,例如:
- button_click - 按钮点击事件
- page_view - 页面浏览事件
- project - 上报项目名称,例如:
- product - 产品埋点项目
- product_basic - 全埋点项目
- eventType(必填) - 事件名称,例如:
- 第二个对象参数
- 自定义上报数据字段
- 直接赋值即可,格式如下
{ role: '置业顾问', tel: '123456789' }
this.$collectLogs.customReport(
{
eventType: '事件名称',
project: '上报项目名称',
},
{
// 自定义字段
role: '置业顾问',
tel: '123456789',
...
// 会将该对象的所有字段作为自定义字段上报
// 字段取值优先级高于 init & updateCustomFields 中的 customFields 字段
}
)
customFields
更新自定义字段
this.$collectLogs.updateCustomFields({
// 慎用,推荐优先使用 init 中的 customFields 字段进行定义数据
role: '置业顾问',
tel: '123456789',
...
// 该方法调用后,传入的字段会覆盖 init 中的 customFields 字段
})
APP
通过监听点击事件进行自动上报相关信息
- 🚫 自动上报限制
- 不支持
APP
的app-nvue
页面 - 自动上报仅支持部分元素点击
- UNI-BUTTON
- BUTTON
- UNI-NAVIGATOR
- A
- 自动上报的信息,是元素中的 innerText
- 不支持
小程序
通过监听所有的tap事件进行自动上报相关信息
- 🚫 自动上报限制
- 仅支持页面中绑定了
点击
事件的元素- @tap
- @longpress
- @longtap
- 自动上报信息为空
- 仅支持页面中绑定了
tips 自定义补充上报的方式
// 上报的信息是 data-log 的值
<view data-log="xxx"></view>
// 识别具有点击事件的元素,即可进行上报
<view @tap.stop></view>
<view @tap.prevent></view>
nvue页面的接入方式
由于APP
的app-nvue
页面,无法通过vue
的生命周期进行埋点,所以需要手动接入
// file xxx.nvue
import { collectLogs } from '@/utils/logs'
const logsMixin = collectLogs.lifecycleMixin()
export default {
mixins: [logsMixin],
...
}