先说一下关于专有钉钉得开放文档专有钉钉门户这上面会有一些入门介绍,以及api文档,可以方便开发者迅速上手。本文得重点是说明如何进行数据埋点。因为这个数据埋点是官方要求的,所以就对应有官方提供的一套规则和代码。
DOCTYPE html>
<meta charset="UTF-8">
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1"/>
<title>应用监控title>
<script src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js">script>
<script src="https://g.alicdn.com/gdt/jsapi/1.8.2/index.js">script>
<script src='https://wpk-gate.zjzwfw.gov.cn/static/wpk-jssdk.1.0.2/wpkReporter.js' crossorigin='true'>script>
<script>
//稳定性监控
try {
const config = {
bid: '用自己应用的参数',
signkey: '1234567890abcdef',
gateway: 'https://wpk-gate.zjzwfw.gov.cn'
};
const wpk = new wpkReporter(config);
wpk.installAll();
window._wpk = wpk;
} catch (err) {
console.error('WpkReporter init fail', err);
}
//通用采集 SDK
(function(w, d, s, q, i) {
w[q] = w[q] || [];
var f = d.getElementsByTagName(s)[0],j = d.createElement(s);
j.async = true;
j.id = 'beacon-aplus';
j.src = 'https://alidt.alicdn.com/alilog/mlog/aplus_cloud.js';
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'aplus_queue');
aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['aplus-rhost-v', 'alog.zjzwfw.gov.cn']
});
aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['aplus-rhost-g', 'alog.zjzwfw.gov.cn']
});
var u = navigator.userAgent
var isAndroid = u.indexOf('Android') > -1
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)
aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['appId', isAndroid ? '28302650' : isIOS ? '28328447' : '47130293']
});
//用户信息埋点
// 如采集用户信息是异步行为需要先执行这个BLOCK埋点
aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['_hold', 'BLOCK']
});
//基础埋点
// 单页应用 或 “单个页面”需异步补充PV日志参数还需进行如下埋点:
aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['aplus-waiting', 'MAN']
});
// 单页应用路由切换后 或 在异步获取到pv日志所需的参数后再执行sendPV:
aplus_queue.push({
'action':'aplus.sendPV',
'arguments':[{
is_auto: false
}, {
// 当前你的应用信息,此两行请勿修改
sapp_id: '用自己应用的参数',
sapp_name: '用自己应用的参数',
// 自定义PV参数key-value键值对(只能是这种平铺的json,不能做多层嵌套),如:
page_id: '页面ID,与page 参数配合使用,保证唯一性',
page_name: '页面中文名称',
page_url: '页面URL'
}]
})
// 设置会员ID
aplus_queue.push({
action: "aplus.setMetaInfo",
arguments: ["_user_id", "当前会员ID"]
});
aplus_queue.push({
action: "aplus.setMetaInfo",
arguments: ["_dev_id", "设备ID是业务定义的,用于定义唯一的设备标识。这个目前没有要求,可不设置。"]
});
// 如采集用户信息是异步行为,需要先设置完用户信息后再执行这个START埋点
// 此时被block住的日志会携带上用户信息逐条发出
aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['_hold', 'START']
});
script>
head>
<body>
<p>应用监控p>
body>
html>
上面就是埋点所需要的全部代码(只针对H5端),拿到所有的代码还不够,还要知道代码的放置位置。其中埋点代码分为:稳定性监控代码(Emas)和流量分析代码(A+)。稳定性监控代码(Emas)只需要在首页加入。流量分析代码(A+)每个页面都需要加入,但是可以写通用js,在其他页面引入。
目前web(H5)应用需要进行稳定性监控代码(Emas)和流量分析代码(A+)这两块内容;小程序的稳定性监控代码(Emas)不需要开发商进行埋点,只需要进行流量分析代码(A+)这一块的埋点操作。
//稳定性监控
try {
const config = {
bid: '用自己应用的参数',
signkey: '1234567890abcdef',
gateway: 'https://wpk-gate.zjzwfw.gov.cn'
};
const wpk = new wpkReporter(config);
wpk.installAll();
window._wpk = wpk;
} catch (err) {
console.error('WpkReporter init fail', err);
}
这一块代码就是稳定性监控的代码,项目中只需引入一次即可,所以就vue项目而言,一般就写在index.html这个文件里就可以了,这块通常是没有问题的。然后就是流量分析的代码了,他有一个通用采集SDK,这玩意其实是死的,也只需要引入一次就可以了,一般就放在稳定性代码的下面就可以了,当然不放心的也可以放到流量分析的代码中去。接下来正式说流量分析,他跟稳定性监控不同的是,他需要在每个页面调用,所以可以写一个通用的js,然后再页面引入,传入所需要的参数(page_id、page_name、page_url)&用户信息(用户id),下面是我写的通用js,仅供参考:
function pointSDK(page_id,page_name,page_url,_user_nick,_user_id){
// 3,用户信息埋点
// 如采集用户信息是异步行为需要先执行这个BLOCK埋点
aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['_hold', 'BLOCK']
});
// 2,基础埋点
// 单页应用 或 “单个页面”需异步补充PV日志参数还需进行如下埋点:
aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['aplus-waiting', 'MAN']
});//
// 单页应用路由切换后 或 在异步获取到pv日志所需的参数后再执行sendPV:
aplus_queue.push({
'action':'aplus.sendPV',
'arguments':[{
is_auto: false
}, {
// 当前你的应用信息,此两行请勿修改
sapp_id: 'xxx',
sapp_name: 'xxx',
// 自定义PV参数key-value键值对(只能是这种平铺的json,不能做多层嵌套),如:
page_id: page_id,
page_name: page_name,
page_url: page_url
}]
})
// 设置会员昵称
aplus_queue.push({
action: "aplus.setMetaInfo",
arguments: ["_user_nick", _user_nick||'刘倩倩']
});
// 设置会员ID
aplus_queue.push({
action: "aplus.setMetaInfo",
arguments: ["_user_id", _user_id||'101']
});
// 如采集用户信息是异步行为,需要先设置完用户信息后再执行这个START埋点
// 此时被block住的日志会携带上用户信息逐条发出
aplus_queue.push({
action: 'aplus.setMetaInfo',
arguments: ['_hold', 'START']
});
}
export default pointSDK
然后在main.js中引入——import pointSDK from “./utils/buryingPoint.js”;Vue.prototype. p o i n t S D K = p o i n t S D K , 就 可 以 在 需 要 的 页 面 调 用 了 t h i s . pointSDK = pointSDK,就可以在需要的页面调用了this. pointSDK=pointSDK,就可以在需要的页面调用了this.pointSDK(37,“留言板”,“/feedBack”,this.userInfo.name,this.userInfo.account_id),其中37为页面id(每个页面唯一,不可重复),留言板为页面的中文名字,“/feedBack”为页面url地址,其余为用户名字和id(浙政钉用户真实信息)。
至此,埋点基本就完事了,剩下的就是细心和检查了。然后再总结说说注意事项吧!!!
埋点注意事项及FAQ:
1.埋点参数value值必须是字符串类型,编码使用utf-8;
2.基础埋点(sendPV调用)数据需要置于需要置于 _hold:BLOCK 和 _hold:START配置之间。
3.H5埋点代码若通过js引用需要置于script标签中;
4.H5若通过js统一引用的话,A+埋点本身也引用了js,需要参考通过js再引用js的写法。可以参考:https://www.cnblogs.com/cxx8181602/p/9340678.html
5.页面名称务必不要使用用户姓名及手机号等个人敏感信息;
6.页面名称只能包含中英文下划线且不以下划线开头。
1)为什么说应用流量分析监控(A+埋点代码)上报成功但是信息不完整
怎样保证应用流量分析信息完整:
1.流量分析代码(A+)每个页面都需要加入,请检查页面都有加流量分析埋点(可以写通用js,在其他页面引入。
2.检查用户页面信息(page_id、page_name、page_url)&用户信息(用户id)是否有上报。
1)需要补充page_url、page_id、page_name参数,埋上应用内对应的页面名称,其中page_id保持应用内唯一,page_url为页面url地址即可,paga_name为页面中文名称,
例如:
page_url = ‘页面url’
page_id = ‘页面ID,与page 参数配合使用,保证应用内唯一性’
page_name = ’页面中文名称‘
2)用户id需要埋政钉用户真实信息,用户id可埋获取用户详情接口的accountId 。
3)应用接入监控每个页面是否都需要加埋点代码?
埋点代码分为:稳定性监控代码(Emas)和流量分析代码(A+);
其中流量分析代码(A+)包含通用采集SDK、基础埋点、用户信息埋点;
稳定性监控代码(Emas)只需要在首页加入(小程序不需要埋稳定性监控代码,这边会统一处理)。
流量分析代码(A+)每个页面都需要加入,也可以写通用js,在其他页面引入。