首页 > 编程语言 >Taro小程序接入灯塔分析SDK统计PV

Taro小程序接入灯塔分析SDK统计PV

时间:2022-09-28 20:34:51浏览次数:50  
标签:reportPV switchTab PV path const data Taro SDK

思路:不修改代码,在一个全局都需要访问的地方埋点。最好能获取到用户的访问路径。

经过测试发现,Taro的navigateTo, redirectTo, switchTab, navigateBack都可以通过重现实现“代理”,来统计用户访问路径。

reportPV = (path = null) => {
        if(!path){
            this.getCurrentPage().then(res => {
                this.reportPV(res)
            })
            const redirectTo = Taro.redirectTo
            const navigateTo = Taro.navigateTo
            const navigateBack = Taro.navigateBack
            const switchTab = Taro.switchTab
            Taro.redirectTo = data => {
                this.reportPV(data.path||data.url)
                redirectTo(data)
            }
            Taro.navigateTo = data => {
                this.reportPV(data.path||data.url)
                navigateTo(data)
            }
            Taro.navigateBack = data => {
                this.getCurrentPage().then(res=>this.reportPV(res))
                navigateBack(data)
            }
            Taro.switchTab = data => {
                this.reportPV(data.url)
                switchTab(data)
            }
        }else{
            this.directReport({
                event:'reportPV',
                params:{path}
            })
        }
    }

实现方式如上,但是仅仅是代理Taro的页面跳转函数是没有办法获取到用户进入的首页,同时小程序一开始加载的时候没有办法通过Taro.getCurrentPages()函数获得页面,因此需要定义一个异步函数getCurrentPage()来获得页面。

getCurrentPage = () => {
        return new Promise((resolve,reject) => {
            if(Taro.getEnv()===Taro.ENV_TYPE.WEAPP){
                const time_id = setInterval(()=>{
                    const page = Taro.getCurrentPages()
                    if(page.length){
                        clearInterval(time_id)
                        resolve(page[0].route)
                    }
                },250)
            }else{
                resolve(
                    window.location.pathname ?
                        this.customRoutes[window.location.pathname] ? this.customRoutes[window.location.pathname] : window.location.pathname
                        :'/pages/index/index'
                    )
            }
        })
    }

标签:reportPV,switchTab,PV,path,const,data,Taro,SDK
From: https://www.cnblogs.com/Scooby/p/16739474.html

相关文章

  • Android SDK下载安装及环境配置
    前面两步,我们已经配置了JDK变量环境,并安装好了Eclipse,通过这两步之后Java的开发环境就准备好了,如果我们只是开发普通的JAVA应用程序的话,那么到这里就可以了。但如果我们要......
  • C#使用 OpenXML SDK读取Excel文档
        Excel的文档,本身就是一个压缩包,使用压缩工具打开一个excel文件,可以看到里边的文件列表如下图:    里边的文件主要就是一些xml文件和其他的素材    ......
  • k8s之mysql(pv,pvc)
    一、PersistentVolume(PV):简短一点就是管理员创建的一种存储资源二、PersistentVolumeClaim(PVC):就一种声明,说我要使用pv了。三、PV和PVC的配置apiVersion:......
  • on the IPv6 loopback interface: 'Cannot assign requested address'
    .netcore+docker  需要修改两个地方Dockerfile添加 ENVASPNETCORE_URLS=http://+:44303  FROMmcr.microsoft.com/dotnet/aspnet:6.0ASbaseENVASPNETCORE......
  • 如何使用大华SDK工具查询和播放设备录像?
    EasyCVR视频融合云平台可支持多协议、多类型的设备接入,包括国标GB28181、RTSP/Onvif、RTMP协议,以及海康/大华SDK、海康Ehome等,对外可分发RTSP、RTMP、FLV、HLS、WebRTC等格......
  • IPv4与IPv6的简单联系与区别
    IPv4与IPv6的简单联系与区别网际协议版本4,(InternetProtocolversion4,IPv4),IPv4是互联网的核心,是网际协议开发过程中的第四个修订版本,也是使用最广泛的网际协议版本。I......
  • IPV4与IPV6的区别
    地址的区别: IPV4协议长度为32位(4个字节)。地址由网络和主机部分组成,这取决于地址类。根据地址的前几位,可定义各种地址类:A、B、C、D或E。IPv4地址的总数为429496......
  • 宏观上看Arcobject SDK
    1.为什么要从宏观上看API很多介绍AO的教程要么直接介绍各个dll文件都是做什么用的,或者直接从开始介绍AxMapControl和AxPageLayoutControl开始。这种方式如同再黑暗中漫无......
  • IPv4和IPv6的区别
    表示不同: 1.IPv4地址以点分十进制表示,ip地址为32位,是数字地址,以点分隔。2.IPv6地址使用以冒号分隔的十六进制数字,ip地址为128位,是字母数字地址,以冒号分隔。八......
  • IPV4和IPV6的区别
    IPV4和IPV6的区别:一、扩展了路由和寻址的能力IPv6把IP地址由32位增加到128位,从而能够支持更大的地址空间,估计在地球表面每平米有4*10^18个IPv6地址,使IP地址在可预......