ARMS 用户体验监控正式发布原生鸿蒙应用 SDK

作者:杨兰馨(楠瑆)

背景

2024 年 10 月 22 日,华为正式发布了原生鸿蒙操作系统(HarmonyOS NEXT)。原生鸿蒙实现了系统底座全部自研,系统的流畅度、性能、安全特性等方面显著提升,也实现了操作系统的自主可控。目前,已有超过 15000 个鸿蒙原生应用和元服务上架,为了进一步优化用户的使用体验,提升开发者效率,阿里云 ARMS 用户体验监控(Real User Monitoring,RUM)推出用于监控原生鸿蒙应用的 SDK,成为原生鸿蒙开发者的首选辅助工具。

功能介绍

ARMS RUM 产品覆盖浏览器、小程序、APP、PC 等客户端环境,观测与分析用户行为、页面性能,精准把握用户体验。本次发布的接入原生鸿蒙应用的 SDK 使用 ArkTS 语言进行开发,数据采集功能完备,在用户使用过程中可以对鸿蒙应用全方位监控。

2.1 页面采集

支持原生页面和 Webview 页面采集。产品统计了页面访问量、平均加载耗时、缓慢访问占比、平均停留时间、访问用户数等详细指标,并且按照地域、App 版本、联网方式、设备、操作系统、运营商等维度统计页面访问的分布。进一步,在页面明细模块,展示访问当前页面的设备品牌、型号、访问时间、IP 地址等信息,并且按照页面维度,展示在当前页面发生的点击、资源加载、异常等事件。针对 Webview 页面,RUM 支持对 Webview 页面错误、页面请求、页面路由切换进行采集。

2.2 资源加载采集

RUM 原生鸿蒙 SDK 会对所有类型的资源加载采集,具体包含 image、script、css、navigation 等静态资源加载和 socket、websocket、api 等动态资源加载。支持网络请求采集,具体包含 RCP、HTTP、WebSocket、TCPSocket、UDPSocket。 针对资源加载,RUM 统计了加载次数、平均加载耗时、错误次数、错误率、请求方法等指标,并且在资源详情页面,展示了 DNS 查询、TCP 链接、SSL 建连、请求响应、内容传输、DOM 解析、资源加载等资源加载性能指标。

2.3 异常采集

异常统计是开发者最为关注的一个模块,RUM 原生鸿蒙 SDK 支持对 JS 崩溃、CPP 崩溃、APP Freeze、卡顿等类型异常的采集。产品对异常次数、崩溃率、影响会话数、影响用户数、异常分布等指标进行分析。

点击异常名称进入异常明细页面,与资源加载和页面访问类似,异常模块也按照地域、App 版本、联网方式、设备、操作系统、运营商等维度进行异常次数统计,并且展示了 Top50 的异常用户明细。比较关键的是,产品展示了具体的异常堆栈信息,并且提供了异常解析功能。在开发者上传对应的 Soucemap / 符号表 so 文件后(如果在应用构建时开启混淆构建,还需额外上传反混淆映射表文件),点击解析堆栈按钮,可以得到对应的解析结果,帮助开发者定位异常产生的位置,从而快速优化代码。

2.4 自定义采集

RUM 原生鸿蒙 SDK 支持开发者根据自身业务需求设定自定义事件、自定义日志的上报。自定义事件支持对事件名称、事件分组、属性值、以及自定义属性的配置。自定义日志支持对日志类型、日志内容、日志自定义属性的配置。

如何开始

只需几个简单步骤,即可将鸿蒙用户体验监控SDK接入您的项目之中:

3.1 集成 SDK

第一步:鸿蒙 RUM SDK 已发布到第三方仓库中,在 Terminal 窗口中,切换到模块级目录,执行如下命令安装三方包,DevEco Studio 会自动在该模块的 oh-package.json5 中自动添加三方包依赖。

cd path/to/your/project
ohpm config set registry https://ohpm.openharmony.cn/ohpm/
ohpm install @alibabacloud_rum/harmony_sdk

第二步:Rebuild 项目,确保配置生效。

3.2 接入 SDK

配置授权信息

检查应用程序 module.json5 配置文件,确保已引入如下授权:

ohos.permission.INTERNET            发送网络数据
ohos.permission.GET_NETWORK_INFO    获取网络状态信息

配置 ohmurl 规则

将工程级或模块级 build-profile.json5 中的 useNormalizedOHMUrl 修改为 true, 若没有该配置项请手动添加。

{
  "app" : {
    "products": [{
      "buildOption": {
          "strictMode": {
            "useNormalizedOHMUrl": true
          }
        }
    }]
  }
}

初始化 SDK

在入口 entry module 自定义 AbilityStage 中的 onCreate 函数中,添加如下代码:

AlibabaCloudRum.withAppID("<your appid>") // AppID 在创建 RUM 应用时获取
      .withConfigAddress("<your config address") // ConfigAddress 在创建 RUM 应用时获取
      .start(this.context.getApplicationContext());

代码示例:

onCreate(): void {
  this.initAlibabaCloudRumSdk();
}

private initAlibabaCloudRumSdk() {
  AlibabaCloudRum.withAppID("<your appid>")
    .withConfigAddress("<your config address")
    .start(this.context.getApplicationContext());
}

更多的详细配置,详见官方接入文档 [ 1] ,接口说明 [ 2] ,SDK 的版本说明 [ 3]04

结语

原生鸿蒙系统是我国首个实现全栈自研的操作系统,全面突破操作系统核心技术,真正实现了国产操作系统的自主可控。在这样的背景下,RUM 推出的用于监控原生鸿蒙的 SDK 为鸿蒙应用的开发者提供了更进一步的便利,对衡量用户体验关键的指标进行全面的分析和追踪。目前阿里云用户体验监控 SDK 已经在华为 SDK 生态市场正式上架,详情可以点击此处了解。

相关文档:

[1] 接入文档

https://help.aliyun.com/zh/arms/user-experience-monitoring/access-harmonyos-application

[2] SDK 配置文档

https://help.aliyun.com/document_detail/2859795.html

[3] SDK 版本说明

https://help.aliyun.com/document_detail/2859794.html

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式驱动开发详解17(CAN驱动开发)

文章目录 前言CAN简介CAN收发器CAN协议讲解电气特性传输协议数据帧遥控帧错误帧过载帧帧间隔 同步矫正 CAN控制器CAN控制器模式CAN接收器CAN波特率 CAN设备树分析CAN测试后续参考文献 前言 该专栏主要是讲解嵌入式相关的驱动开发&#xff0c;但是由于部分模块的驱动框架过于复…

计算机游戏运行时常见问题解析:d3dx9_43.dll丢失的真相与修复指南

游戏运行时d3dx9_43.dll缺失问题全解析 在计算机游戏的探险之旅中&#xff0c;d3dx9_43.dll文件缺失常成为玩家的绊脚石。此DLL文件是DirectX 9的关键组件&#xff0c;对图形渲染至关重要。以下&#xff0c;我们将深入剖析其丢失原因&#xff0c;并提供精简有效的修复策略。 …

CSS(13):2D

一.2D转换之移动translate 2D移动是2D转换里面的一种功能&#xff0c;可以改变元素在页面中的位置&#xff0c;类似定位。 transform:translate(x,y);&#xff08;里面可以用到参数%&#xff0c;是相对于自身宽度和高度来计算的&#xff09; transform:translateX(n); tran…

AI 赋能:医学科研审稿邀请的优化之道

在医学科研这座宏伟的知识殿堂中&#xff0c;审稿邀请是保障学术成果质量的关键环节&#xff0c;审稿邀请犹如一扇关键之门&#xff0c;连接着科研成果与专业评审&#xff0c;决定着学术智慧的传承与升华。如今&#xff0c;AI 技术恰似一把神奇的钥匙&#xff0c;悄然插入这扇门…

如何搭建Hexo博客,并发布到github上

1、安装好git 2、安装好npm、node 3、切换npm的源&#xff0c;现在阿里的cnpm不行了&#xff0c;要切换成新的&#xff1a; npm config set registry https://registry.npmmirror.com npm config get registry4、安装hexo-cli npm install -g hexo-cli查看是否安装成功&#…

React,Antd实现文本输入框话题添加及删除的完整功能解决方案

最终效果就是实现该输入框: 添加话题时,话题自动插入到输入框前面多文本输入框左侧间距为话题的宽度多行文本时,第二行紧接开头渲染删除文本时,如果删除到话题,再次删除,话题被删除首先构造div结构const [hashtag, setHashtag] = useState(""); // 话题内容con…

Apache服务器配置:从小白到高手的飞跃

本节目录&#xff1a; Web服务器概述 Apache服务器及安装 配置 作业 Web服务:互联网的心脏 想象一下&#xff0c;如果没有Web服务器&#xff0c;我们就不能浏览网页&#xff0c;不能在线购物&#xff0c;不能看视频&#xff0c;不能做很多事情。Web服务器就是互联网的心脏&…

基于SpringBoot的滑雪场管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

bean创建源码

去字节面试&#xff0c;直接让人出门左拐&#xff1a;Bean 生命周期都不知道&#xff01; spring启动创建bean流程 下面就接上了 bean生命周期 doGetBean Object sharedInstance this.getSingleton(beanName); sharedInstance this.getSingleton(beanName, new ObjectF…

【HarmonyOS】鸿蒙获取appIdentifier,Identifier

【HarmonyOS】鸿蒙获取appIdentifier&#xff0c;Identifier 一、前言 三方后台需要填写的所谓appIdentifier&#xff0c;Identifier信息&#xff0c;其实对应鸿蒙应用的appID。 二、解决方案&#xff1a; 注意&#xff0c;模拟器获取data.signatureInfo.appIndentifer为空…

在Linux的嵌入式开发中,如何确定要操作的帧缓冲设备是第几个实例?即是fb0还是fb1还是fb2...

方法汇总 在实际编写程序时&#xff0c;要确定操作的帧缓冲设备&#xff08;如 /dev/fb0、/dev/fb1 等&#xff09;&#xff0c;通常需要结合系统环境和硬件配置。以下是一些常见的方法&#xff0c;帮助你确定需要打开的帧缓冲设备实例&#xff1a; 1. 检查系统设备文件 查看…

The Past, Present and Future of Apache Flink

摘要&#xff1a;本文整理自阿里云开源大数据负责人王峰&#xff08;莫问&#xff09;在 Flink Forward Asia 2024上海站主论坛开场的分享&#xff0c;今年正值Flink开源项目诞生的第10周年&#xff0c;借此时机&#xff0c;王峰回顾了Flink在过去10年的发展历程以及 Flink社区…

自动驾驶控制与规划——Project 2: 车辆横向控制

目录 零、任务介绍一、环境配置二、算法三、代码实现四、效果展示 零、任务介绍 补全src/ros-bridge/carla_shenlan_projects/carla_shenlan_stanley_pid_controller/src/stanley_controller.cpp中的TODO部分。 一、环境配置 上一次作业中没有配置docker使用gpu&#xff0c;…

FFmpeg库之ffplay

文章目录 FFmpeg环境搭建ffplay使用通用选项视频选项音频选项快捷键使用滤镜直播拉流 FFmpeg环境搭建 FFmpeg官网 FFmpeg环境搭建 我这里用的是cmake配置&#xff0c;mingw编译&#xff0c;不用移动文件夹 CMakeLists.txt cmake_minimum_required ( VERSION 3.16 )project…

jenkins pipeline打包流程

Jenkins Pipeline 是 Jenkins 提供的一种用于持续集成和持续交付&#xff08;CI/CD&#xff09;的脚本化流程工具。它允许你通过编写一个 Jenkinsfile 文件来定义整个构建、测试和部署的流程。本文介绍打包springcloud项目&#xff0c;react项目为docker镜像 文章目录 1.项目结…

【LC】876. 链表的中间结点

题目描述&#xff1a; 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[3,4,5] 解释&#xff1a;链表只有一个中间结点…

WEB开发: Node.js路由之由浅入深- 即拿即用完整版

前面我们一起学习了Node.js路由之由浅入深&#xff0c;基本了解并熟悉了Node.js的路由实现。 现在我们来一个综合完整版&#xff0c;让这个路由模块即拿即用&#xff0c;也就是下载运行就可用&#xff0c;并可以轻松地自行增加路由&#xff0c;无需去繁琐地修改路由配置&#…

就业相关(硕士)

一、嵌入式 1.机器人行业 1.1 大致情况 要做机器人行业&#xff0c;主要技术栈是运动控制、深度学习、强化学习、具身智能等&#xff0c;主要求职方向有运动控制算法工程师和机器人算法工程师等等。大致薪资在30w到50w不等&#xff0c;主要看方向&#xff08;双211&#xff…

C++编程:使用树莓派Pico制作光控小夜灯

在智能家居系统中,光控设备通过环境光强度的变化自动调节设备的状态,具有广泛的应用。常见的应用场景包括自动开关灯、调节LED亮度等。本项目基于树莓派Pico开发板,通过光敏电阻检测环境光强度,并利用PWM调光控制LED亮度,实现一个简单的光控小夜灯。本文将深入解析光敏电阻…

安卓获取所有可用摄像头并指定预览

在Android设备中&#xff0c;做预览拍照的需求的时候&#xff0c;我们会指定 CameraSelector DEFAULT_FRONT_CAMERA前置 或者后置CameraSelector DEFAULT_BACK_CAMERA 如果你使用的是平板或者工业平板&#xff0c;那么就会遇到多摄像头以及外置摄像头问题&#xff0c;简单的指…