基于SDK方式的小程序监控

news2024/9/26 5:21:55

基于SDK方式的小程序监控

一、背景

微信小程序自 2017 年正式上线以来,就受到商家和开发者的青睐。到 2022 年底,我国的互联网普及率已经高达 75.6%。随着互联网的快速发展,小程序也在快速成长,不仅使用人数在逐年攀升,交易额也在不断增加。

根据《2022上半年小程序互联网发展白皮书》我们可以了解到,目前全网小程序的数量已经超过 750 万,日活超过 7.8 亿,涉及的类别已经覆盖日常生活的方方面面。除了微信小程序,其他一些大型互联网公司也纷纷推出了自己的小程序平台。可以预计,将来小程序的规模还会不断扩大。

随着使用人数的增长和业务的不断扩展,一些小程序也出现了诸如白屏、无响应、卡顿等影响用户体验方面的问题,小程序的性能监控和错误监控也变得日趋重要。它在提高用户体验、提升开发效率、降低维护成本、提升品牌形象、数据分析和决策支持等方面都有着重要意义。如何在技术方面实现对小程序进行监控,也是大家普遍关心的问题。

二、常见监控方法

从技术角度来看,小程序监控可以采用以下三种方法:

前端监控:一般是通过前端代码实现,包括埋点、性能和错误监控等。

后端监控:后端监控主要是通过后端代码实现,包括接口监控、日志监控、安全监控等。

第三方监控:一般是以 SDK 的方式集成到小程序中,通过数据上报,生成图表、报告等。业界多采用此方法,本文也将重点讨论SDK 方面的知识,以解决前面提到的这些问题。

三、SDK 监控开发

3.1 监控指标

因为小程序宿主环境的原因,所涉及技术均围绕微信小程序的生态展开,开发者工具采用微信官方提供的开发者工具,API 也以最新版本为主。

大致流程为:微信小程序 SDK 上报信息给收集服务,收集服务把数据做初步处理并存储到 TIDB 内。统计分析服务定时对收集到的数据做统计分析,并记录分析结果到TIDB内供API服务使用。API服务为可视化平台提供接口, 展示统计分析结果。

image

在实际应用中, SDK 数据上报的指标主要分为性能和错误两个大的方面。

性能

小程序的操作不外乎以下步骤:打开小程序,加载小程序页面,页面渲染,路由跳转,交互,退出小程序等,根据一般情况下用户使用小程序的过程,我们可重点监控 setData 、FP、LCP 等数据。

根据小程序提供的 wx.getPerformance,我们可以获取到当前小程序性能相关的信息,如下图所示:

image

代码思路如下:

// 监听性能
if (wx.canIUse(  'getPerformance')) {
      const performance = wx.getPerformance()
      this.performanceObserver = performance.createObserver((entryList: WechatMiniprogram.EntryList) => {
          const entryArray = entryList.getEntries()
        entryArray.forEach((  element: PerformanceEntryObject) => {
              const {  name, duration, path, moduleName, navigationType } = element
            // 获取性能信息
        })
    })
      this.performanceObserver.observe({ entryTypes: ['navigation', 'render', 'script'] })
}

对 name 和 entryType 分别判断,就可以得到小程序启动耗时、页面首次渲染耗时、运行时性能包括页面切换性能等相关数据。

错误

JavaScript 本身的错误、Ajax 的错误都可以通过对应手段进行收集,这里不再详述。

需要注意的是,因为 Promise中抛出的错误,无法在 window.onerror、try/catch、 error 事件捕获到,不过官方提供了 onUnhandledRejection方法,可以借助此 API 实现未处理的 Promise 拒绝事件 的监听。

3.2 实现原理

和 web 提供的各种 API略有不同,微信小程序有一套自己的实现方案,也提供了全局可用的 API (详见下文)。我们可以通过重写一些全局函数和相应的 API 即可拿到诸如 网络请求、设备信息、错误等信息。然后通过收集分析这些数据,就可以实现性能分析、错误排查。

下面仅以 page 为例,说明如何实现小程序原生方法的重写。

小程序重写 page等

(function(){
    // 小程序原生Page方法
    let originalPage = Page;
    // 自定义的Page方法
    Page = (config) => {
        // todo 在这里设置各种方法
        // 将配置对象继续想下传递给小程序原来的Page方法
        originalPage (config);
    }
})();

不少数据指标的收集需要借助小程序官方提供的 API,下面是小程序监控中会用到的一些。

小程序官方 API

  • wx.getAccountInfoSync():获取当前帐号信息。包括小程序 appId、小程序版本等信息。

  • wx.getSystemInfoSync():获取系统信息。包括设备品牌、像素比、屏幕宽高、微信版本号、操作系统及版本等信息。

  • wx.getDeviceInfo():获取设备基础信息 。获取设备品牌、型号、性能等级等信息。

  • wx.getLaunchOptionsSync():获取小程序启动时的参数。获取启动小程序的路径、场景值、query 参数等信息。

  • setUpdatePerformanceListener :返回每次更新中主要更新步骤发生的时间戳等信息,可以用来大体上估计setData 触发更新的开销。

3.3 示例

小程序 SDK 的使用方法比较简单,有的是采用 npm 包的方式,有的是需要在小程序项目里面引入相应的 JavaScript文件,下面仅以后者为例说明如何使用。

首先需要下载 aiwen-1.0.min.js文件,在小程序的 app.js 文件中引入并配置 apikey 即可,代码如下:

const { Monitor } = require('./page/common/aiwen-1.0.min')
const monitor = Monitor.init({
    apikey: '61674b15-075b-4229-a9db-c9cd293d9924',
    // 其他自定义字段
 });

3.4 可视化展示

数据的收集只是其中一部分,如何通过可视化的方式向用户展示数据也是非常重要的。数据的展示需要根据客户的需要及收集到的信息进行数据清洗、整理,而后进行合理分类和统计分析。通过图表等形式,可以一目了然地获取到小程序监控相关的信息,有助于客户了解小程序性能,或者进行错误排查。

对于一些不太明显的问题,我们可以通过SDK 收集到的用户路径、设备、网络信息等数据,多角度的分析问题,梳理用户的使用场景,进而帮助我们解决代码中的难以复现的问题。

![image](https://img-blog.csdnimg.cn/img_convert/a949a69e4d1d62d6aebd3040ffe056ba.png

3.5 注意事项

打包构建

除了数据的收集和展示,在 SDK 开发中,小程序的编译、配置、打包等问题也需要非常注意,一般可采用下面的工具、库协助开发。

Eslint:JavaScript 代码检查工具,。

Docusaurus: react 系静态网站生成器,可用来小程序监控帮助文档,以便客户浏览。

Rollup: 打包构建。

TypeScript :类型检查,尤其适合开发第三方库等项目。

SDK 本身问题的处理

收集好的数据是需要上报的,依然是通过 wx.request 去发送请求,不过这时候存在一个问题,如果自己二次封装过的上报数据请求会被认为是普通的网络请求,这时候会触发上报,然后就会死循环。

所以,在劫持 wx.request 的时候需要注意,如果发送的 URL 为上报地址的接口,就不用再上报了。

API 的兼容性

兼容性问题

有一些 API 是微信某个版本后才有的,这时候就需要做一些版本兼容,否则可能无法触发事件。可通过 wx.canIUse() 等方法进行判断。

四、总结

综上所述,小程序 SDK 方式的监控在众多方法是非常有效且便捷的一种,不过监控体系的建设也需要扎实的技术基础和强有力的数据分析手段才能更好地为用户服务。

总之,小程序监控可以帮助企业深入了解用户体验、应用程序性能和业务影响,从而优化产品和服务,提高用户满意度和业务收入,是值得重视,且需要投入一定的时间和精力研究的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/853921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

宝尊电商短期前景堪忧,宝尊国际能否取得成功还有待验证

来源:猛兽财经 作者:猛兽财经 核心业务面临短期逆风 在2023年第一季度财报中,宝尊电商(BZUN)表示其电商业务(简称BEC)主要包括:品牌的门店运营、客户服务以及物流和供应链管理、IT和数字营销等增值服务”。…

词嵌入、情感分类任务

目录 1.词嵌入(word embedding) 对单词使用one-hot编码的缺点是难以看出词与词之间的关系。 所以需要使用更加特征化的表示(featurized representation),如下图所示,我们可以得到每个词的向量表达。 假设…

php webshell 免杀入门

webshell 查杀软件: d盾、安全狗、护卫神、Sangfor WebShellKill 在线查杀 百度WEBDIR https://scanner.baidu.com 河马 https://www.shellpub.com cloudwalker牧云 https://webshellchop.chaitin.cn 查杀技术 静态检测、动态检测、日志检查 静态检查&#xff1a…

感觉和身边其他人有差距?你的感觉我懂!

在我们的成长历程中,总要经历不同的人和事,身边不乏比我们优秀,比我们厉害的人,这个是无可避免的,也是无法选择的,但是可以选择的是:我们怎么做! 目录 我的情况事件感受 我的解法心态…

【人工智能前沿弄潮】—— 玩转SAM(Segment Anything)

玩转SAM(Segment Anything) 官网链接: Segment Anything | Meta AI (segment-anything.com) github链接: facebookresearch/segment-anything: The repository provides code for running inference with the SegmentAnything Model (SAM), links fo…

企业服务器被devos勒索病毒攻击后怎么处理,devos勒索病毒如何攻击的

众所周知,科学技术是第一生产力,科学技术的发展给企业与人们的生活带来了极大变化,但随之而来的网络安全威胁也不断增加。最近,我们收到很多企业的求助,企业的计算机服务器遭到了devos勒索病毒的攻击,导致企…

华为、腾讯、淘宝面试流程+面试技术题分析,速看!

IT 是一个人才日益紧缺的行业,随着人才的紧缺,IT 业的薪水也是水涨船高。互联网巨头们对人才的争夺,更是日益激烈化。对于从事 IT 的职场人士,绝大部门都想进入那些巨头公司。除了薪水高、办公环境好,发展更有前景外&a…

unity海康威视原生SDK拉取网络摄像头画面,并展示在一个Material上

原理是使用sdk获取视频流,格式为YUV,然后分离YUV通道到三张不同的Texture2D上,通过shader将三个通道重新输出为原始图像。 我将所用的各个部分已经整理成一个压缩包,免积分下载 压缩包结构如下 使用步骤 1 DLL:放在Plugins文件…

东南亚调研

东南亚地理 东南亚经济 https://zh.m.wikipedia.org/zh-hans/%E4%B8%9C%E7%9B%9F%E5%9B%BD%E5%AE%B6GDP%E5%88%97%E8%A1%A8 东南亚人口结构 东南亚一半以上的人口年龄在 30 岁以下 https://population-pyramid.net/zh-cn 东南亚数字经济 原文件: 谷歌关于东南亚数…

Java整合Selenium录制视频

捕捉视频 有时候我们未必能够分析故障只需用日志文件或截图的帮助。有时捕获完整的执行视频帮助。让我们了解如何捕捉视频。 我们将利用Monte媒体库的执行相同。 配置 第1步:导航到URL下载屏幕记录JAR,如下图所示。 http://www.randelshofer.ch/monte…

20230809在WIN10下使用python3批量将TXT文件转换为SRT文件

20230809在WIN10下使用python3批量将TXT文件转换为SRT文件 2023/8/9 17:30 由于喜欢看纪录片等外文视频,通过剪映/PR2023/AUTOSUB识别字幕之后,可以通过google翻译识别为简体中文的DOCX文档。 DOCX文档转换为TXT文档之后,还需要转换为SRT文档…

Linux(CentOS7)搭建达梦数据库

参考官方文档 本文记录一下达梦数据库的安装步骤,在安装的过程中出现了一些问题,进行了处理。 文章目录 安装前准备数据库安装命令行安装图形化安装 配置实例注册服务启动、停止数据库 安装前准备 用户在安装 DM 数据库之前需要检查或修改操作系统的配…

Easy Rules规则引擎(1-基础篇)

目录 一、序言二、Easy Rules介绍三、定义规则(Rules)1、规则介绍2、编程式规则定义3、声明式规则定义 四、定义事实(Facts)五、定义规则引擎(Rules Engine)1、规则引擎介绍2、InferenceRulesEngine规则引擎示例(1) 定义触发条件(2) 定义规则触发后的执行行为(3) 测试用例 一、…

智能安防监控:基于Java+SpringBoot实现人脸识别搜索

目录 引言背景介绍目的和重要性 人脸识别技术的基本原理图像采集和预处理特征提取与表示人脸匹配算法 人脸识别搜索的应用领域公告安全和监控社交网络和照片管理 参考实现步骤数据收集与预处理人脸特征提取查询处理 引言 背景介绍 结合人脸识别技术,在工厂、学校、…

【Docker】AUFS、BTRFS、ZFS、储存池详解

洁洁的个人主页 我就问你有没有发挥! 知行合一,志存高远。 前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是…

2023/08/09 IOS设计规范收集

背景:绘制原型图时,不确定状态栏、标签栏、侧边margin具体怎么设置,很困惑… iphone 界面尺寸 左边是能找到最新的设计规范,右边是auxre10自带画布尺寸显示,结合做参考 ios界面结构 状态栏 状态栏位于界面最上方&…

Leetcode-每日一题【剑指 Offer 18. 删除链表的节点】

题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head [4,5,1,9], val 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调…

竞争加剧,毛利率低于竞争对手,京东前路艰难

来源:猛兽财经 作者:猛兽财经 机遇与风险 虽然京东(JD)与亚马逊(AMZN)在业务方面有很多相似的地方,但两家公司在毛利率方面却有很大的差异。长期以来,亚马逊的利润率一直接近40%甚至…

模板学堂|SQL数据集动态参数使用场景及功能详解

DataEase开源数据可视化分析平台于2022年6月正式发布模板市场(https://dataease.io/templates/)。模板市场旨在为DataEase用户提供专业、美观、拿来即用的仪表板模板,方便用户根据自身的业务需求和使用场景选择对应的仪表板模板&a…

CD4029计数器实测仿真及BCD转七段码

前面的博文中,我们介绍过CD40110(这是一个常见的直接接7段数码管的计数器,我们这里介绍一款新的计数器CD4029,这也是很常见的计数器,不同的是后者可以输出BCD编码。 文章目录 一、总体效果二、CD4029的管脚和功能介绍1、芯片功能简…