uniapp开发浙政钉H5微应用埋点

一、稳定性监控埋点和通用采集SDK

首先在uniapp项目根目录下新建template.h5.html作为项目入口模板(更多用法见官网:uni-app官网),同时需注意修改manifest.json中index.html模板路径(如下图)

接下来就可以把稳定性监控埋点和通用采集SDK的代码放在模板里(如下)

<!DOCTYPE html>
<html lang="zh-CN">  
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
				<meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
        <title>
            <%= htmlWebpackPlugin.options.title %>
        </title>
        <script>
            var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
            document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')
        </script>
				<script type="text/javascript" src="https://assets.zjzwfw.gov.cn/assets/ZWJSBridge/1.0.1/zwjsbridge.js"></script>
				<script src="https://g.alicdn.com/gdt/jsapi/1.9.18/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: 'bid在上架申请通过后官方人员会发给你',
							signkey: 'signkey在上架申请通过后官方人员会发给你',
							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);
					}
				</script>
				
				<!-- 通用采集SDK -->
				<script>
				  (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']
				  });
				</script>




				<link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
    </head>
    <body>
        <noscript>
            <strong>Please enable JavaScript to continue.</strong>
        </noscript>
        <div id="app"></div>
        <!-- built files will be auto injected -->
    </body>
</html>

 这里大部分代码都是固定的。

二、PV日志和用户信息采集埋点

大多数流量分析(A+)上报成功但信息不完整(埋点部分成功)都是此处出了问题造成的。

这个具体做法根据每个人具体业务逻辑,实现可能略有差别。

我的做法是首先封装一个JS函数:

/** 
 * 埋点统一代码 (除了个别参数,整体格式也是比较固定)
 * 以下代码不可拆分,否则可能导致埋点只有部分成功
 * meta 和 dingUser 是业务参数,每个人各不相同,根据你自己的项目来决定
 * */
 function set_MD (meta, dingUser) {
     
	 let nickName = dingUser.name ? dingUser.name : 'xxxx';
	 let userId = dingUser.user_id ? dingUser.user_id : '666888';
	 
	 // 如采集用户信息是异步行为需要先执行这个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_id上架申请通过后官方人员会发',
	 		sapp_name: 'sapp_name上架申请通过后官方人员会发',
	 		page_id: 'xxxxx_' + meta.pagePath,
	 		page_name: meta.name,
	 		page_url: meta.pagePath
	 	}]
	 })
	 
	 
	 // 设置会员昵称
	 aplus_queue.push({
	 	action: "aplus.setMetaInfo",
	 	arguments: ["_user_nick", nickName]
	 });
	 // 设置会员ID
	 aplus_queue.push({
	 	action: "aplus.setMetaInfo",
	 	arguments: ["_user_id", userId]
	 });
	 
	 // 如采集用户信息是异步行为,需要先设置完用户信息后再执行这个START埋点
	 // 此时被block住的日志会携带上用户信息逐条发出
	 aplus_queue.push({
	 	action: 'aplus.setMetaInfo',
	 	arguments: ['_hold', 'START']
	 });
 }
// 切记需要保证上面代码执行时page_id、page_name、page_url、nickName、userId五个参数不是空的

紧接着我是全局混入mixin一个js文件,在onShow里面调用上面封装的函数

 关于mixins全局混入的用法不熟悉的可自己查vue官网。

完毕。

### 浙政钉 H5 页面中的埋点功能实现 要在浙政钉 H5 页面中实现埋点功能并完成数据采集,可以通过以下方式实现: #### 1. **引入 A+ SDK** 在项目中集成阿里云的 A+ SDK 是实现埋点的基础。通常情况下,在 Vue2 的环境中,可以在 `main.js` 文件中加载 A+ SDK 并初始化它。 ```javascript // main.js 中配置 A+ SDK 初始化 window.aplus_queue = window.aplus_queue || []; (function() { var aplusScript = document.createElement('script'); aplusScript.type = 'text/javascript'; aplusScript.async = true; aplusScript.src = '//g.alicdn.com/aplusb/js/alog.min.js'; // 阿里云官方提供的SDK地址 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(aplusScript, s); })(); ``` 上述代码片段用于动态加载 A+ SDK 脚本文件[^1]。 --- #### 2. **设置 Meta Information** 为了确保埋点能够正常工作,需要向 A+ SDK 提供必要的元信息(Meta Info)。这些信息可能包括用户的唯一标识符 `_user_id` 或其他自定义参数。 ```javascript // 设置用户ID作为埋点的关键参数 aplus_queue.push({ action: 'aplus.setMetaInfo', arguments: ['_user_id', sessionStorage.getItem('SESSION_CODE_KEY')] // 替换为实际存储的账户ID }); ``` 这里需要注意的是,`sessionStorage.getItem('SESSION_CODE_KEY')` 应该返回一个纯数字字符串形式的用户 ID,这是埋点成功的必要条件之一[^4]。 --- #### 3. **触发事件埋点** 当特定的操作发生时,比如按钮点击、表单提交等,可以手动记录事件日志。以下是示例代码展示如何捕获点击事件并发送埋点请求: ```javascript function logEvent(eventName, eventData) { aplus_queue.push({ action: 'aplus.sendEventData', arguments: [ eventName, JSON.stringify(eventData) ] }); } document.getElementById('exampleButton').addEventListener('click', function () { const eventDetails = { userId: sessionStorage.getItem('SESSION_CODE_KEY'), buttonId: 'exampleButton' }; logEvent('button_click_event', eventDetails); // 自定义事件名称和数据结构 }); ``` 这段代码展示了如何通过监听 DOM 元素上的交互行为来触发埋点逻辑,并将相关上下文传递给后台服务进行处理[^3]。 --- #### 4. **验证埋点是否生效** 确认埋点已经正确部署之后,还需要测试其有效性。最简单的方式是在浏览器开发者工具 (F12) 下观察网络请求部分是否有对应的 API 请求发出,并且 HTTP 状态码应显示为 `200 OK` 表明服务器接收到了客户端的数据包[^2]。 如果发现某些路径下的埋点未能成功,则需仔细排查前端代码是否存在遗漏项或是后端接口存在异常情况等问题所在之处。 --- #### 5. **注意事项** - 所有的敏感字段如 `bid`, `sapp_id` 等均应当由负责该项目的相关人员提供真实值替换占位符。 - 使用 IRS 平台打包上传源码至浙政钉可能会遇到兼容性问题,请提前做好充分测试以减少返工几率。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值