当前位置: 首页 > Web前端 > JavaScript

uniapp埋点事件,数据统计

时间:2023-03-27 00:07:41 JavaScript

埋点功能描述方案应用于uniapp小程序商城项目1、页面浏览事件调用封装的跳转方法自动处理2、自动添加页面参数(页面url、页面参数、触发时间等),以及平台公共参数自动添加(用户信息、平台标识等)3、点击事件和接口请求事件需要你添加路由跳转封装方法eventRouteimporteventAnalysefrom"@/common/eventAnalyse.js";constnavigateTo=(url)=>{constlink=getCurrentPages()[getCurrentPages().length-1].route;eventAnalyse.analyse('hide',{url:link})让_url=typeofurl=='object'?url.url:urluni.navigateTo({url:_url,animationType:'pop-in',animationDuration:300,success:function(res){eventAnalyse.analyse('show',{url:_url})}});}constredirectTo=(url)=>{constlink=getCurrentPages()[getCurrentPages().length-1].route;eventAnalyse.analyse('hide',{url:link})让_url=typeofurl=='object'?url.url:urluni.redirectTo({url:_url,animationType:'pop-in',animationDuration:300,success:function(res){eventAnalyse.analyse('show',{url:_url})}});}constreLaunch=(url)=>{constlink=getCurrentPages()[getCurrentPages().length-1].route;eventAnalyse.analyse('hide',{url:link})让_url=typeofurl=='object'?url.url:urluni.reLaunch({url:_url,success:function(res){eventAnalyse.analyse('show',{url:_url})}});}constswitchTab=(url)=>{constlink=getCurrentPages()[getCurrentPages().length-1].route;eventAnalyse.analyse('hide',{url:link})让_url=typeofurl=='object'?url.url:urluni.switchTab({url:_url,success:function(res){//eventAnalyse.analyse('show',_url)}});}constnavigateBack=(num)=>{constlink=getCurrentPages()[getCurrentPages().length-1].route;eventAnalyse.analyse('hide',{url:link})uni.navigateBack({delta:num});}exportdefault{navigateTo,redirectTo,reLaunch,switchTab,navigateBack}事件处理封装方法eventAnalyseimport*ascommonfrom'./common.js'//introducecommonimport*asdbfrom'./db.js'//introducedbimportapifrom'@/apiConfig/api.js'import{pageCode}from'./pageCode.js'//页面代码字典/***@description路由跳转行为分析*@param{*}triggerType事件类型,必须通过'show'||'隐藏'||'点击'||'响应'||'退出'||'customevent'*@paramparamseventparameters*/constanalyze=(triggerType="",params={})=>{letstartTime,//startTime进入页面时间leaveTime,//leaveTime离开页面时间stayTime,//stayTime留长url,//当前页面urltoUrl,//要重定向的urlpage_params,//页面参数cityObj=db.get('cityObj'),userInfo=db.get('userInfo');if(!triggerType)returnswitch(triggerType){case'show':const_url=params.urlstartTime=newDate().getTime()leaveTime=''db.set('startTime',startTime)page_params=params.url?getArgs(params.url):{}url=getUrl()toUrl=_url.indexOf('?')!=-1?_url.split('?')[0]:_urlbreakcase'hide':startTime=db.get('startTime')leaveTime=newDate().getTime()stayTime=leaveTime-startTimeurl=getUrl()中断case'tabBarShow':startTime=newDate().getTime()leaveTime=''db.set('startTime_tabBar',startTime)url=getUrl()breakcase'tabBarHide':startTime=db.get('startTime_tabBar')leaveTime=newDate().getTime()stayTime=leaveTime-startTimeurl=getUrl()breakcase'quit':startTime=db.get('startTime')leaveTime=newDate().getTime()url=getUrl()//标记用户已经跳出isQuit=trueconsole.log('跳出')breakcase'click':startTime=newDate().getTime()url=getUrl()case'response':startTime=newDate().getTime()url=getUrl()}consttabBar=['页面/索引/index','pages/class/index','pages/welfare/index','pages/goods-car/goods-car','pages/ucenter/index']if(triggerType=='show'){returnfalse}//阻止tabBar页面onHide触发两次事件上报if(triggerType=='hide'&&tabBar.indexOf(params.url)!=-1){returnfalse}constlogData={logVersion:"0.1.0",joinEvents:triggerType,client:db.constParams.platform,userId:userInfo.uuid?userInfo.uuid:'',sessionId:db.get('sessionId'),deviceId:db.get('deviceId'),city:cityObj.cityCode,area:cityObj.towncode,startTime:common.timeToDate(startTime),stayTimeStr:停留时间?Common.msToDate(停留时间):0,停留时间:停留时间?parseInt(停留时间/1000):0,结束时间:离开时间?common.timeToDate(leaveTime):common.timeToDate(startTime),pageUrl:url,pageId:pageCode[url],pageParams:page_params,...params}letuserLog=db.get('userLog')?db.get('userLog'):[]userLog.push(logData)db.set('userLog',userLog)if((stayTime&&stayTime>5*1000*60)||userLog.length>100){控制台.log('埋点数据提交')console.log('...')api.analysisData(userLog).then(()=>{db.del('userLog')})}}functiongetArgs(urlArgs){letparams,url,result,reqDataStringif(urlArgs.indexOf("?")!=-1){url=urlArgs.split("?")[1]result=url.replace(/&/g,'","').replace(/=/g,'":"')reqDataString='{"'+result+'"}'params=JSON.parse(reqDataString)returnparams}else{returnparams={}}}functiongetUrl(){constpages=getCurrentPages()constcurrentPage=pages[pages.length-1]consturl=currentPage.routereturnurl}exportdefault{analyze}全局注册方法importeventRoutefrom"@/common/eventRoute.js";从"@/common/eventAnalyse.js"导入事件分析Vue.prototype.$eventRoute=eventRoute;Vue.prototype.$eventAnalyse=eventAnalyse;页面浏览事件this.$eventRoute.navigateTo({url:'/pages/index/index'});click事件//点击购物车事件,page_id为事件名必须通过this.$eventAnalyse.analyse('click',{page_id:'cart_btn',paramsA:'',paramsB:''})接口请求事件//添加到购物车界面请求事件,page_id为事件名必须传入this.$eventAnalyse.analyse('response',{page_id:'cart_add',paramsA:'',paramsB:'')