Flashduty Android RUM SDK 默认自动收集所有 RUM 事件的多个指标和属性。您还可以通过 API 添加自定义属性以扩展默认数据集。
隐私合规与权限说明
Flashduty Android RUM SDK 仅为真实用户体验监控、错误定位、性能分析和网络请求分析收集必要的运行时信息。SDK 自身声明的 Android 权限如下:不采集的设备标识
Android RUM SDK 不会读取或上报以下设备唯一标识:RUM 默认可生成一个匿名用户 ID,用于跨会话关联同一匿名用户。该 ID 是 SDK 随机生成的 UUID,并存储在应用本地数据目录中,不来自 Android ID、IMEI、OAID 或广告 ID。您可以在 RUM 配置中关闭匿名用户追踪。
会采集的系统上下文
SDK 会自动附加以下系统上下文,帮助排查性能、崩溃和网络问题:本文档列出的“地理位置”字段由 Flashduty 后端根据客户端请求 IP 推断,不是 Android 客户端读取系统定位。SDK 不调用 GPS、基站定位或融合定位 API,也不需要定位权限。
应用启动指标
Flashduty 自动收集以下应用启动性能指标:Views 监控
View 代表用户在应用中看到的唯一屏幕。每个 View 开始时会创建一个新的 RUM 事件,并在 View 的整个生命周期内更新该事件。View 会收集其生命周期内发生的所有资源、操作、错误和长任务的相关信息。
自动追踪策略
在 Android 中,Activities 和 Fragments 被视为 View。SDK 提供以下自动追踪策略:默认属性
RUM SDK 为所有事件自动附加默认属性,帮助您了解用户设备、网络状态和应用上下文。通用核心属性
通用核心属性
设备属性
设备属性
以下属性与设备相关,在所有 RUM 事件中自动收集:
连接性属性
连接性属性
以下网络相关属性在所有 RUM 事件中自动收集:
操作系统属性
操作系统属性
以下操作系统相关属性在所有 RUM 事件中自动收集:
地理位置属性
地理位置属性
RUM 可以从用户的 IP 地址推断出地理位置信息:
地理位置信息由 Flashduty 后端根据客户端 IP 地址推断,不会在 Android 客户端收集精确的 GPS 位置,也不需要定位权限。
全局用户属性
全局用户属性
您可以通过
setUser() API 设置用户信息,这些信息会被附加到所有 RUM 事件中:事件特定属性
除了默认属性外,不同类型的 RUM 事件还会收集特定的指标和属性。Session 属性
Session 属性
View 属性
View 属性
View 事件包含以下特定属性和性能指标:
Resource 属性
Resource 属性
Resource 事件表示应用中的网络请求。收集的属性包括:
Error 属性
Error 属性
错误事件收集异常和崩溃信息,错误消息和堆栈跟踪会被自动包含:
网络错误:网络错误包含有关失败的 HTTP 请求的信息,并收集以下属性:
Action 属性
Action 属性
Action 代表用户与应用的交互(例如点击、滑动、滚动)。计时属性:
基本属性:
数据存储与安全
本地存储机制
在数据上传到 Flashduty 之前,会以明文形式存储在应用的缓存目录中。 存储位置:安全保护:
- 缓存文件夹受 Android 应用沙箱保护
- 在大多数设备上,其他应用无法读取这些数据
数据上传机制
Android RUM SDK 采用批处理方式上传事件,在保证数据传输的同时最小化对用户体验的影响。批处理流程
1
事件收集
SDK 将未压缩的事件追加到批次文件中,使用 TLV 编码格式(Tag-Length-Value)。
2
批次优化
当批次关闭时:
- 读取批次文件并提取事件
- 对 RUM 事件进行去重优化(删除冗余的 View 事件)
- 构建特定于每个追踪的有效载荷
3
压缩上传
使用 gzip 压缩数据,减少网络流量和上传时间。
上传触发条件
批次在以下任一情况下会被上传:上传策略
智能上传机制:
- 网络优化 - 优先通过 WiFi 上传,移动网络也支持
- 电量管理 - 确保不会过度消耗设备电量
- 失败重试 - 上传失败时批次会保留在本地,直到成功发送
- 数据压缩 - 使用 gzip 压缩,减少网络流量
Direct Boot 模式支持
如果您的应用支持 Direct Boot 模式(在设备解锁前启动),请注意:Flashduty SDK 会在设备解锁后开始收集数据。如果您需要在 Direct Boot 模式下收集数据,请确保使用设备加密存储而非凭据加密存储。
相关文档
SDK 接入
了解如何集成 Android SDK
高级配置
配置自定义属性、采样和事件过滤
兼容性
了解 SDK 兼容性要求