关于依赖和包名的说明Flashduty Android SDK 完全兼容 Datadog 开源协议,代码中的 import 语句使用
com.datadog.android.* 包名。您可以无缝复用 Datadog 生态的文档、示例和最佳实践,同时享受 Flashduty 平台的服务。支持的配置场景:
- 丰富用户会话 - 添加自定义视图、操作、资源和错误信息
- 保护敏感数据 - 屏蔽个人身份信息等敏感数据
- 关联用户会话 - 将用户会话与内部用户标识关联
- 控制数据量 - 通过采样和事件过滤优化数据收集
- 增强上下文 - 为数据添加自定义属性
丰富用户会话
自定义视图
当使用ActivityViewTrackingStrategy 或 FragmentViewTrackingStrategy 时,RUM SDK 会自动追踪视图。您也可以在视图变为可见或可交互时手动发送自定义 RUM 视图。
- Kotlin
- Java
参数说明:
viewKey(String) - 视图的唯一标识符,同一个viewKey用于调用startView()和stopView()viewName(String) - 视图的名称attributes(Map<String, Any?>) - 附加到视图的属性(可选)
自定义操作
除了自动追踪的用户交互,您还可以追踪特定的自定义用户操作(如点击、滑动、点赞)。- Kotlin
- Java
RumActionType 枚举值
RumActionType 枚举值
自定义资源
除了自动追踪的资源,您还可以手动追踪特定的自定义资源(如网络请求、第三方库加载)。- Kotlin
- Java
RumResourceKind 资源类型
RumResourceKind 资源类型
自定义错误
要记录特定错误,当异常发生时通知 RUM SDK:- Kotlin
- Java
更多错误上报详情,请参阅 Android 异常上报。
自定义计时
除了 RUM SDK 默认的性能指标,您还可以使用addTiming API 测量关键操作的耗时。计时是相对于当前 RUM 视图开始时间的偏移量。
- Kotlin
- Java
设置用户信息
RUM SDK 支持设置标准用户信息。- Kotlin
- Java
事件和数据管理
清除所有数据
使用clearAllData 清除当前存储在 SDK 中的所有未发送数据:
- Kotlin
- Java
停止数据收集
使用stopInstance 停止收集数据并清除所有本地数据:
- Kotlin
- Java
控制事件批量上传
RUM SDK 会自动批量上传事件。您可以通过配置参数控制批量上传的行为:- Kotlin
- Java
UploadFrequency 上传频率
UploadFrequency 上传频率
设置远程日志阈值
您可以为远程记录的消息定义最低日志级别。低于该级别的日志不会发送到 Flashduty:- Kotlin
- Java
设置
Log.WARN 阈值后,只有 WARN、ERROR 级别的日志会被上传,DEBUG 和 INFO 级别的日志将被过滤。追踪自定义全局属性
除了由 RUM SDK 自动捕获的默认属性外,您还可以向 RUM 事件添加额外的上下文信息,例如自定义属性。自定义属性的用途:
- 根据业务信息(如购物车状态、用户等级、广告活动)过滤和分组用户行为
- 跟踪特定用户的浏览路径
- 了解哪些用户受错误影响最大
- 监控关键用户的性能表现
追踪用户会话
要识别用户会话,在初始化 SDK 后使用setUserInfo API:
- Kotlin
- Java
参数说明:
id(String) - 唯一用户标识符name(String) - 用户友好名称,默认在 RUM UI 中显示email(String) - 用户电子邮件,若无名称则显示邮件- 以上属性均为可选,建议至少提供一个
追踪属性
全局属性会被附加到所有 RUM 事件中,用于添加通用的上下文信息。 添加全局属性:- Kotlin
- Java
- Kotlin
- Java
追踪 Widgets
Widgets 不会自动追踪。要监控 Widget 的交互,需要手动调用 API。
- Kotlin
- Java
初始化参数
在初始化 Flashduty Android SDK 时,您可以使用Configuration.Builder 配置多种选项。
自动追踪视图
要自动追踪视图(Activities、Fragments),在初始化时使用useViewTrackingStrategy:
- Kotlin
- Java
自动追踪网络请求
要自动追踪 HTTP 网络请求,请参考 SDK 接入指南 中的 OkHttp 拦截器配置。自动追踪 Apollo GraphQL 请求
如果您使用 Apollo GraphQL 客户端进行网络调用,可以启用自动追踪。1
添加 Apollo 依赖
在应用的
build.gradle 文件中添加依赖:build.gradle
2
配置 Apollo Client
- Kotlin
- Java
Flashduty 追踪头将自动添加到您的 GraphQL 请求中,使其能够被追踪。
- Kotlin
- Java
自动追踪长任务
在主线程上执行的长时间运行的操作可能会影响应用的视觉性能和响应性。SDK 可以自动检测并追踪长任务。- Kotlin
- Java
默认阈值为 100ms。您可以根据应用性能要求调整此阈值。
修改或丢弃 RUM 事件
要在批量处理之前修改 RUM 事件的某些属性,或完全丢弃某些事件,请在初始化时提供EventMapper<T> 的实现。
- Kotlin
- Java
可修改的事件属性
当实现EventMapper<T> 接口时,每种事件类型只有部分属性可以修改:
ViewEvent 可修改属性
ViewEvent 可修改属性
ActionEvent 可修改属性
ActionEvent 可修改属性
ErrorEvent 可修改属性
ErrorEvent 可修改属性
ResourceEvent 可修改属性
ResourceEvent 可修改属性
LongTaskEvent 可修改属性
LongTaskEvent 可修改属性
示例:丢弃敏感错误
- Kotlin
- Java
获取 RUM Session ID
检索 RUM Session ID 对于故障排查很有帮助。您可以将 Session ID 附加到支持请求、电子邮件或错误报告中,以便支持团队在 Flashduty 中找到用户会话。- Kotlin
- Java
采样控制
默认情况下,RUM 会收集所有会话的数据。您可以通过sessionSampleRate 参数设置采样率来减少收集的会话数量。
- Kotlin
- Java
采样率范围:0.0 - 100.0
100.0- 收集所有会话(默认)50.0- 收集 50% 的会话0.0- 不收集任何会话
用户跟踪同意
为遵守 GDPR、CCPA 等隐私法规,RUM 允许在初始化时设置用户跟踪同意状态。同意状态说明
如果初始化时使用
TrackingConsent.PENDING,SDK 将开始收集数据,但在同意状态更改为 GRANTED 之前不会发送。更改同意状态
您可以通过setTrackingConsent API 在初始化后更改同意状态:
- Kotlin
- Java
最佳实践
视图追踪
视图追踪
- 确保在适当的生命周期方法中调用
startView和stopView,避免视图重复追踪 - 为每个视图使用唯一的
viewKey
资源追踪
资源追踪
- 使用自定义资源追踪时,确保每个
startResource都有对应的stopResource或stopResourceWithError调用 - 避免追踪内部资源或过于频繁的请求
事件修改
事件修改
- 修改事件时,只有表格中列出的属性可以修改,其他属性的修改将被忽略
- 返回
null可丢弃整个事件
性能优化
性能优化
- 合理设置采样率和批量上传频率,平衡数据量与性能开销
- 避免在事件回调中执行耗时操作
相关文档
SDK 接入
了解如何接入 Android SDK
数据收集
了解 SDK 收集的数据类型
兼容性
了解 SDK 兼容性要求