浙政钉埋点——小程序
浙政钉埋点——小程序
写在前面:本篇内容针对的是浙政钉小程序的埋点,浙政钉H5应用请查阅 浙政钉埋点——H5
准备工作:
1、浙政钉埋点官方开发手册:浙政钉-H5&小程序应用采集开发手册
2、准备sapp_id、spp_name(每个应用的spp_id和spp_name都是不同的,不知道的问业主要)
3、下载小程序通用采集SDK,下载地址打开后直接全选复制下来,我自己命名为aplus_mini.js
项目结构如下
下面开始埋点
1、main.js 内引用 sdk,并做相应配置
import dd from 'gdt-jsapi';
import mixin from './utils/mixin.js'
Vue.mixin(mixin)
var system = dd.getSystemInfoSync()
var ptf = system.platform.toUpperCase()
var aplus = require('./utils/aplus_mini.js')(
{
'metaInfo':{
'appId':ptf=='ANDROID'?'28302650':ptf=='IOS'?'28328447':'47130293',
'aplus-rhost-v':'alog.zjzwfw.gov.cn',
'aplus-rhost-g':'alog.zjzwfw.gov.cn'
}
}
);
Vue.prototype.$aplus = aplus
// 自定义封装埋点方法全局注册
import { baseAplus } from './utils/dataCollection.js'
Vue.prototype.$baseAplus = baseAplus
2、封装流量分析埋点代码,dataCollection.js代码如下
该文件中一共有四个需要替换的参数,根据实际情况填写
import store from '../store/index.js'
export function baseAplus(data) {
let curPage = getCurrentPages();
let route = curPage[curPage.length - 1].route;
console.log('路由信息',route)
console.log('埋点信息',data)
// 基础埋点
this.$aplus.aplus_queue.push({
action:'aplus.setMetaInfo',
arguments:['aplus-waiting','MAN']
});//
//单页应用路由切换后或在异步获取到pv日志所需的参数后再执行sendPV:
this.$aplus.aplus_queue.push({
'action':'aplus.sendPV',
'arguments':[{
is_auto:false
},{
//当前你的应用信息,此两行按应用实际参数修改,不可自定义。
sapp_id:'替换为-业主给你的sapp_id',
sapp_name:'替换为-业主给你的sapp_name',
//自定义PV参数key-value键值对(只能是这种平铺的json,不能做多层嵌套),
// page_id: '页面ID,与page 参数配合使用,保证唯一性,我用的是路由',
// page_name: '页面中文名称',
// page_url: '页面URL'
page_id: data.id,
page_name: data.name,
page_url: route
}]
})
//如采集用户信息是异步行为需要先执行这个BLOCK埋点
this.$aplus.aplus_queue.push({
action:'aplus.setMetaInfo',
arguments:['_hold','BLOCK']
});
//设置会员ID
this.$aplus.aplus_queue.push({
action:"aplus.setMetaInfo",
arguments:["_user_id",'替换为-当前登录用户的accountId']//示例:store.state.userInfo.dingAccountId,具体根据实际代码调整
});
this.$aplus.aplus_queue.push({
action:"aplus.setMetaInfo",
arguments:["_dev_id","yourDeviceId"]
});
this.$aplus.aplus_queue.push({
action:"aplus.setMetaInfo",
arguments:["_user_nick",'替换为-当前登录用户的accountId']//示例:store.state.userInfo.dingAccountId,具体根据实际代码调整
});
//如采集用户信息是异步行为,需要先设置完用户信息后再执行这个START埋点
//此时被block住的日志会携带上用户信息逐条发出
this.$aplus.aplus_queue.push({
action:'aplus.setMetaInfo',
arguments:['_hold','START']
});
console.log('埋点完成')
}
3、在每个页面中调用上述封装的方法,我这里使用全局混入,mixin.js代码如下
import dd from 'gdt-jsapi'
import {baseAplus} from './dataCollection.js'
export default{
data(){
return{
mdName:'通用名称'
}
},
onLoad(){
this.doMd()
},
methods:{
doMd(){
let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
let curRoute = routes[routes.length - 1].route // 获取当前页面路由,也就是最后一个打开的页面路由
baseAplus({id:curRoute, name:mdName})
},
}
}
注意:使用该方法需要在每个页面的data中单独定义一个mdName,(mixin中data优先级小于组件中的data),比如首页index.vue,其他页面同样操作,确保每个页面的mdName不要相同(参数需要每个页面的中文名称,因为uniapp没有获取页面名称的api,routes[routes.length - 1].$holder.navigationBar.titleText
存在兼容性问题,索性在每个页面的data中重新定义一个。)
<template>
首页
......
</template>
<script>
export default{
data(){
return{
mdName:'首页',
...
}
}
}
</script>
至此,埋点结束,怎么看埋点是否成功,参考下图,看看参数是否都对的上,重点关注sapp_id和sapp_name,如果没有,那一定是不成功的
具体查询埋点是否成功,点这里,用浙政钉扫码登陆就行,好像每周一中午,周二周四晚上才会更新