关于浙政钉、专有钉钉的数据埋点小心得总结(稳定性监控、流量分析)
先说一下关于专有钉钉得开放文档
专有钉钉门户
这上面会有一些入门介绍,以及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.
po
i
n
t
S
D
K
=
p
o
i
n
t
S
D
K
,
就
可
以
在
需
要
的
页
面
调
用
了
t
h
i
s
.
pointSDK = pointSDK,就可以在需要的页面调用了this.
p
o
i
n
t
S
D
K
=
p
o
i
n
t
S
D
K
,
就
可
以
在
需
要
的
页
面
调
用
了
t
h
i
s
.
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,在其他页面引入。