浙政钉埋点——小程序

浙政钉埋点——小程序

写在前面:本篇内容针对的是浙政钉小程序的埋点,浙政钉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,如果没有,那一定是不成功的


具体查询埋点是否成功,点这里,用浙政钉扫码登陆就行,好像每周一中午,周二周四晚上才会更新

posted @ 2024-03-25 13:10  X1nChenH  阅读(74)  评论(0编辑  收藏  举报