傲渊山岳 发表于 2024-10-20 19:00:24

Android & iOS 使用 ARMS 用户体验监控(RUM)的最佳实践

作者:元泊
引言

背景信息

随着移动互联网技能的持续演进与全民互联网期间的深入,用户在 Android、iOS 应用步伐、小步伐、H5 游戏及网页等多元化平台上的交互时长明显增长。这一趋势加剧了用户体验(UX)场景的复杂性,并对跨设备及多样网络环境下的性能监控提出了更高要求。在此背景下,深度剖析用户泉源、浏览轨迹、驻留时长、访问速率性能,以及遭遇的任何体验停滞,不仅是解锁每位用户行为深层次需求的关键,也是驱动产品与服务优化、提拔用户满足度的焦点策略。
ARMS 用户体验监控介绍

https://img-blog.csdnimg.cn/img_convert/1fa3ff32564166b7075a971872f2793c.png
ARMS RUM 是阿里云应用实时监控服务(ARMS)下的用户体验监控(RUM)产品,覆盖 Web/H5、各类平台小步伐、Android、iOS、Flutter、ReactNative、Windows、macOS 等平台框架。接入 SDK 后会自动收罗端侧页面性能、资源加载、API 调用、非常崩溃、卡顿、用户操作、系统信息等数据,还支持变乱、日记、非常等数据按需自界说上报以满足业务数据分析需求,提供全面的性能分析、非常分析、产品分析、会话分析能力,帮助快速跟踪定位题目原因,提拔产品用户使用体验。ARMS RUM 具备以下焦点功能。


[*]前后端全链路打通能力,展示每跳详情,便捷剖析错慢调用
[*]记录会话轨迹,回溯用户操作,层层下钻定位根因
[*]全面收罗非常信息,堆栈剖析定位代码题目,便捷评估非常影响面
[*]多维度多指标页面性能统计,提供单次访问各阶段耗时分布,快速定位错慢资源
[*]资源加载和 API 调用全量收罗,便捷筛选错慢、高频资源哀求,多维分析资源哀求性能
[*]自界说数据上报,满足业务数据收罗,增强产品分析能力
[*]站点总览大盘,实时掌握访问趋势、性能指标、非常趋势、地域分布等站点信息
[*]支持各项指标告警设置,提供基于动态阈值非常检测告警
[*]提供数据探索,可进行数据多维统计,实现站点性能、用户行为机动分析
[*]数据全开放,明细数据存储到 SLS,指标存储到 Prometheus,按需机动使用
准备工作

在使用 ARMS 用户体验监控之前,您需要做一些准备工作。


[*]已开通应用实时监控服务(ARMS),请参见开通 ARMS [ 1] 。
[*]已创建对应平台的应用(支持 Android、iOS、Flutter、RN、Web、小步伐、PC 等),请参见快速入门 [ 2] 。
产品接入

接入 Android 用户体验监控

在 Android 平台上,推荐通过 Maven 方式接入。
首先,需要在工程根目次下的 build.gradle 脚本文件中添加插件依赖,如下:
buildscript {
repositories {
    mavenLocal()
    google()
    mavenCentral()
    gradlePluginPortal()
}

dependencies {
    // 导入阿里云 ARMS RUM 插件依赖
    // 建议从官网获取最新版本SDK接入:https://help.aliyun.com/zh/arms/user-experience-monitoring/android-sdk-release-notes
    classpath "com.aliyun.rum:alibabacloud-android-rum-plugin:0.3.3"
}
}
其次,需要在工程 App 模块对应的 build.gradle 脚本启用插件并添加 SDK 依赖,如下:
// 启用阿里云ARMS RUM插件
apply plugin: "com.aliyun.rum"

dependencies {
// 导入阿里云ARMS RUM SDK
// 建议从官网获取最新版本SDK接入:https://help.aliyun.com/zh/arms/user-experience-monitoring/android-sdk-release-notes
implementation("com.aliyun.rum:alibabacloud-android-rum-sdk:0.3.3")
}
接着,需要在 Application 的 onCreate 方法或用户隐私同意之后完成 SDK 的初始化,如下:
import com.alibabacloud.rum.AlibabaCloudRum;

public class YourApplication extends Application {
@Override
public void onCreate() {
    super.onCreate();
    AlibabaCloudRum.withAppID("<your appid>") // AppID,创建RUM应用时获取。
      .withConfigAddress("<your config address>") // ConfigAddress,创建RUM应用时获取。
      .start(getApplicationContext());
}
}
最后,完成权限和混淆规则设置。
权限设置:
<!--必须-->
<uses-permission android:name="android.permission.INTERNET"/>
<!--必须-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--可选-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!--可选-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!--可选-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
混淆规则设置:
#ProGuard configurations for Aliyun ARMS RUM SDK
-keep public class com.openrum.**{*;}
-keep public class openrum.**{*;}
-keep public class com.alibabacloud.rum.**{*;}
-dontwarn com.openrum.**
-dontwarn openrum.**
#End Aliyun ARMS RUM SDK
接入 iOS 用户体验监控

iOS 平台推荐通过 CocoaPods 方式接入。
首先,在 Xcode 工程的 Podfile 文件中添加最新版本的 iOS SDK,如下:
source 'https://github.com/CocoaPods/Specs.git'

target 'iOSDemo' do
# 导入阿里云ARMS RUM SDK
# 建议从官网获取最新版本SDK接入:https://help.aliyun.com/zh/arms/user-experience-monitoring/ios-sdk-version-description
pod 'AlibabaCloudRUM', '0.3.1'
end
并在项目根目次(或 Podfile 文件地点目次)下执行一下下令更新 Pod 环境:
pod install --repo-update
其次,在 main.m 或 AppDelegate.m 中导入头文件,如下:
// Objective-C
@import AlibabaCloudRUM;

// Swift
import AlibabaCloudRUM
最后,在 main 函数或 - application:didFinishLaunchingWithOptions:方法中完成 SDK 的初始化:
// Objective-C
;// ConfigAddress,创建RUM应用时获取。
;// AppID,创建RUM应用时获取。

// Swift
AlibabaCloudRUM.setConfigAddress("<your config address>")// ConfigAddress,创建RUM应用时获取。
AlibabaCloudRUM.start("<your appId>")// AppID,创建RUM应用时获取。
通过以上方式,可以便捷的完成 Android、iOS SDK 的快速集成。通过这些 SDK 的集成,我们能够实时收集用户在应用中的行为数据,包罗访问频率、操作路径和性能指标等。这样的数据为我们提供了极具价值的参考,使得我们能够识别用户痛点,优化应用性能,从而提拔用户满足度。
接下来,我们可以利用收集到的数据进行深入分析,识别用户行为模式,制定针对性的优化策略。通过不断的监控与分析,我们将能够持续改进产品,为用户提供更加流畅的体验,进而增强用户留存率和品牌忠诚度。
常见场景分析

通过会话分析诊断非常

在用户体验监控中,会话被界说为用户与步伐或网站交互的一连串运动,按照时间序列展示用户操作和相关的变乱、资源哀求以及崩溃、卡顿等非常变乱。当出现崩溃或其他非常变乱时,可以通过用户标识、用户 IP 等查询特定会话,回溯用户行为轨迹,通过上下文和错误诊断排查题目,快速定位题目根因。
如下图,当我们在非常统计中发现某个 OOM 非常次数明显升高时,可以借助会话分析能力快速定位导致 OOM 题目的根因:
https://img-blog.csdnimg.cn/img_convert/d68ab77abf688806d3d61aa9c1cede43.png
在非常明细中可以找到会话 ID:
https://img-blog.csdnimg.cn/img_convert/2c9727e829d69b775eb0e39a7cd6023e.png
在新打开的页面中点击“会话”,可以获取到当前非常关联到的变乱信息:
https://img-blog.csdnimg.cn/img_convert/870356681640c48a6ae9f73233c3a0da.png
非常关联的变乱会以时间正序展示,找到对应的非常变乱,可以分析非常发生之前的变乱。在本次非常变乱中,变乱类型为“用户行为-click”的 ConstraintLayout 变乱很可能是导致本次非常的原因。
https://img-blog.csdnimg.cn/img_convert/8488b1ea9ced2d2f479a68d4271a1014.png
点击“ConstraintLayout”变乱,可以看到是用户在 JavaCrashActivity 页面点击了“堆内存 oom”这个按钮导致的。
https://img-blog.csdnimg.cn/img_convert/7ed8f0dfe6890854ac561ec0822d204a.png
至此,通过用户的会话轨迹可以比较轻易把非常变乱与会话进行关联,从而在分析非常变乱时,可以复现出用户的旅程信息,便于疑难题目的定位。
分析资源加载和 API 哀求

资源加载和网络哀求的性能对用户体验的影响至关重要,它会直接影响用户与应用步伐之间的交互。用户体验监控提供资源加载和网络哀求的性能监控,功能涵盖:趋势分析、多维度分布分析、缓慢/错误分析、指标统计分析等。
可以通过“资源加载”和“API 哀求”分别进入到资源和 API 的分析页面。
https://img-blog.csdnimg.cn/img_convert/079e0f1e96a3e7ab946fd7833ba3d259.png
左侧快捷筛选面板提供应用、资源、设备、系统、用户等维度的快捷筛选条件。可以通过资源名称对资源的 path 部分快速检索,如下图:
https://img-blog.csdnimg.cn/img_convert/2b865d4af821f70613855b85c7a40cea.png
在资源名称中选择想要分析的资源,可以对该资源进行趋势和明细分析:
https://img-blog.csdnimg.cn/img_convert/acf0a85b7e3c09d891c34e0fd821332c.png
在趋势分析中,可以通过加载次数、加载缓慢次数、加载失败次数、平均加载耗时等关键指标,评估资源的整体加载状态。除此之外,还可以统计资源加载的地域、App 版本、联网方式、运营商分布等。
在资源加载明细中,可以对单条资源的加载情况进行详细分析。
https://img-blog.csdnimg.cn/img_convert/6b778c7c09c58ab5f6d353dde09529c2.png
在该页面中,会以图形化的方式对资源加载过程中的 DNS 查询、TCP 连接、SSL 建连、哀求相应、内容传输等关键指标进行展示。可以比较便捷的看到资源加载过程中各个阶段的耗时,从而进行针对性优化。
除了耗时分布,资源哀求发生时,应用版本、调用页面、地域、运营商等信息都会一同收罗,便于在题目发生时进行聚类分析。
分析内嵌 H5 页面

用户体验监控支持收罗 Android/iOS 内嵌 H5 页面的性能数据。不仅支持收罗 JavaScript 类型的错误,还支持收罗 H5 页面、H5 资源、H5 API 等相关的数据。H5 页面的性能监控数据会与 Android/iOS 原生性能监控数据通过 SessionId 关联,在同一个 Session 中,您既可以看到 Android/iOS 的性能监控数据,也能看到 H5 页面的监控数据。
分析 JavaScript 非常

在非常统计>JS 错误分类,可以看到 JavaScript 相关的非常。
https://img-blog.csdnimg.cn/img_convert/a59300dfbe9d3a293c3eb656990ea9a6.png
通过左侧的快捷筛选,可以通过设备、系统、用户等多个维度对 JavaScript 非常信息进行筛选。
在非常明细页面,可以直观的看到非常堆栈。如果明细页面透出的信息无法满足您的题目排查需要,还可以通过会话 ID 对非常进行关联分析。
https://img-blog.csdnimg.cn/img_convert/d1117676206a368f676ae119d4a4d3b1.png
点击会话 ID 关联的数值后,可以进入到如下页面:
https://img-blog.csdnimg.cn/img_convert/2b07043c87b547ea0f8e7ffaac1216c9.png
通太过析 JavaScript 非常关联的会话以及页面等信息,可以还原在 JavaScript 非常发生时用户的行为轨迹,便于复现非常出现的场景。
分析 H5 页面性能

通过页面访问>WebView 页面,可以进入到 H5 页面性能分析的功能页面。
https://img-blog.csdnimg.cn/img_convert/686b9434a178cc0e2c8b4af39aebcddd.png
通过点击对应的页面名称,可以进入到页面访问明细。在该页面中,除了基础的设备、运营商、地域等信息之外,还透出了当前页面加载的性能数据。用户体验监控对页面加载耗时分布数据进行了可视化展示,通过这种方式可以比较方便的确定页面加载性能的瓶颈。为了更方便的的诊断页面加载性能,当前页面关联的资源加载等变乱也会在下发以列表的形式展示,并在资源加载出现非常时标红展示,方便题目定位。
https://img-blog.csdnimg.cn/img_convert/c2013d5d63abf5991f4c80ad48f6d8cd.png
端到端链路打通

在典型的电子商务生意业务场景下,从用户界面触发的下单操作启动了一连串复杂的交互流程,这一过程穿越了多层架构并涉及多次向后端系统的深层次调用,共同织就了一条从客户端到服务器的端到端生意业务链路。在此复合型交互旅程中,任何单一节点的故障或性能瓶颈——包涵但不限于客户端逻辑处理的非常中断、后端服务响应时间的延迟增长,乃至外部不可控因素如移动网络环境的不稳固性——均具备潜在能力去停滞生意业务流程的顺畅推进,严重时可导致生意业务失败。
进一步而言,故障根源分析在此情境下显得尤为棘手,尤其是当需精准定位题目系出自数据包在网络通道中的传输停滞,照旧后端服务处理逻辑的效能低下时。通过端到端链路打通能力,可以记录哀求在系统中的流转路径与状态,可以真实还原每一次哀求的调用轨迹,快速定位错慢根因,并且通过哀求粒度的数据关联实现业务影响面分析、业务非常排查等诉求。
通过用户体验监控进行端到端链路打通,需要先在应用设置的哀求管理区域设置好需要打通链路的域名信息,如下:
https://img-blog.csdnimg.cn/img_convert/1bc91904c7f10eaa7835ce9dc9edb520.png
当前支持 Skywalking v3 和 OpenTelemetry 协议。具体设置可以参考用户体验监控官网设置文档:https://help.aliyun.com/zh/arms/user-experience-monitoring/use-cases/mobile-association-trace
在 API 哀求中勾选“包含调用链”选项,可以过滤出支持链路打通的网络 API 哀求,如下:
https://img-blog.csdnimg.cn/img_convert/c3a460973043a3931ded841a1d670afc.png
点击右侧的“查看调用链”,可以看到具体的链路追踪详情:
https://img-blog.csdnimg.cn/img_convert/34bfa16943896be01ce60afeefebedea.png
进阶参考

设置用户扩展信息

用户体验监控 SDK 答应自界说设置用户相关的扩展信息,从而帮助您完成数据分析与实际用户相关联的需求场景。
1)Android 设置用户扩展信息
AlibabaCloudRum.setUserExtraInfo(new HashMap<String, Object>(){
    {
      put("shop_id", "hz_xh_234123");
      put("shop_name", "阿里云云谷店33333");
    }
});
2)iOS 设置用户扩展信息
[AlibabaCloudRUM setUserExtraInfo:
    @{
      @"shopId": @12312313,
      @"shopName": @"云谷店"
    }
];
自界说非常

通过支持上报自界说非常,SDK 能够帮助开发者在业务逻辑出现非常时迅速捕获相关信息。这在用户体验受到影响时尤为重要,自界说非常的记录可以为开发团队提供关键信息,便于快速定位和解决题目,从而淘汰对用户的负面影响。需要通过调用 SDK 相关的 API 完成自界说非常数据的上报,如下:
1)Android 上报自界说非常
AlibabaCloudRum.setCustomException(
"exceptionName-default",
"exceptionCauseBy-default",
"exceptionErrorDump-default"
);
2)iOS 上报自界说非常
[AlibabaCloudRUM setCustomException:@"exceptionName-default"
                            causeBy:@"exceptionCauseBy-default"
                        errorDump:@"exceptionErrorDump-default"
];
通过以上方式接入后,在控制台的非常统计 > 自界说页面中可以看到上报的自界说非常数据信息。
https://img-blog.csdnimg.cn/img_convert/e7aaea7db9314403a18a23a41fe54fa1.png
自界说变乱

自界说变乱答应开发者根据特定需求记任命户行为和应用变乱。这种机动性使得我们能够深入相识用户的交互方式,以及哪些功能受到用户的特别关注。通太过析这些自界说变乱的数据,我们可以更好地优化用户旅程和提拔产品的整体体验。需要通过调用 SDK 相关的 API 完成自界说变乱数据的上报,如下:
1)Android 上报自界说变乱
HashMap<String, Object> mapKv = new HashMap<>();
mapKv.put("shop_id", "hz_xh_234123");
mapKv.put("order_id", "12397495850");

double orderPrice = 123.34f;

AlibabaCloudRum.setCustomEvent("order-submit", "order", orderPrice, mapKv);
2)iOS 上报自界说变乱
[AlibabaCloudRUM setCustomEvent:@"order-submit"
                        group:@"order"
                        value:123.34f
                           info:@{
                                    @"shop_id": @"hz_xh_234123",
                                    @"order_id": @"12397495850"
                              }
];
关于自界说变乱的更多使用方式,发起您参考官网文档 SDK 设置 [ 3] 。
自界说日记

自界说日记功能提供了更高效的方式来记录特定的业务逻辑和应用状态。开发者可以按照本身的需求添加日记信息,使得在题目排查和性能监测时能够获得更深入的洞察。这些日记不仅有助于调试过程,也为后期的性能优化提供了数据支持。需要通过调用 SDK 相关的 API 完成自界说变乱数据的上报,如下:
1)Android 上报自界说日记
HashMap<String, Object> mapKv = new HashMap<>();
mapKv.put("shop_id", "hz_xh_234123");
mapKv.put("order_id", "12397495850");

AlibabaCloudRum.setCustomLog("submit order info: order_id: 1312344933",
                           "order-submit",
                           "order snapshots info",
                           "INFO",
                           mapKv);
2)iOS 上报自界说日记
[AlibabaCloudRUM setCustomLog:@"submit order info: order_id: 1312344933"
                         name:@"order-submit"
                  snapshots:@"order snapshots info"
                        level:@"INFO"
                         info:@{
                                    @"shop_id": @"hz_xh_234123",
                                    @"order_id": @"12397495850
                              }
];
结语

本文重要介绍了 ARMS 用户体验监控的基本功能特性,并介绍了在几种常见场景下的最佳实践。ARMS 用户体验监控作为一个面向终端的实时监控服务,不仅能够提供专业的、深层次的、精细化的数据收罗和洞察能力,还能通过集成 ARMS 应用监控和可观测链路 OpenTelemetry 版本进行端到端链路深度整合和分析。
相关链接:
 开通 ARMS
https://help.aliyun.com/zh/arms/getting-started/activate-arms
 快速入门
https://help.aliyun.com/zh/arms/user-experience-monitoring/quick-start/
 SDK 设置
https://help.aliyun.com/zh/arms/user-experience-monitoring/sdk-configuration/
附录:
RUM Web/H5 快速接入:
https://help.aliyun.com/zh/arms/user-experience-monitoring/access-web-h5-applications
RUM 小步伐快速接入:https://help.aliyun.com/zh/arms/user-experience-monitoring/access-applet
RUM 移动端快速接入:
https://help.aliyun.com/zh/arms/user-experience-monitoring/access-mobile-applications
RUM PC 端快速接入:
https://help.aliyun.com/zh/arms/user-experience-monitoring/access-pc-platform-application
点击此处,立刻开通 ARMS 用户体验监控服务。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Android & iOS 使用 ARMS 用户体验监控(RUM)的最佳实践