@flashcatcloud/mobile-react-native 提供 RUM 能力。初始化后,SDK 会把应用中的视图、用户操作、网络请求、错误和崩溃事件上报到 Flashduty RUM,并使用 source: "react-native" 标识数据来源。
当前 SDK 版本为
0.1.x,支持 iOS 和 Android 平台(不支持 React Native Web)。JavaScript 类名以 Dd* 开头(如 DdSdkReactNative、DdSdkReactNativeConfiguration、DdRum)。暂不支持 Session Replay;Logs 仅 Android 端生效,iOS 端为空操作。前提条件
接入前,请先完成以下准备:- 在 Flashduty 控制台创建一个类型为 React Native 的 RUM 应用,并获取 Application ID 和 Client Token
- 确认应用可以访问
https://browser.flashcat.cloud/api/v2/rum - React Native
>= 0.63.4 < 1.0(新架构已在 0.76 上验证);iOS 部署目标 ≥ 12.0,AndroidminSdkVersion≥ 21 - 构建机可以访问 Maven Central 与 CocoaPods trunk:SDK 的原生依赖
cloud.flashcat:dd-sdk-android-*(Android)和Flashcat*pods(iOS)会在构建时自动解析 - 在应用入口(
index.js/App.tsx)尽早完成 SDK 初始化
安装 SDK
安装核心包,并按你使用的导航库安装对应的视图采集包。原生模块通过 autolinking 自动接入,iOS 端还需要执行pod install。
初始化 SDK
在应用入口尽早初始化,且只初始化一次。构造函数的三个布尔参数依次控制自动采集用户操作、网络请求和 JS 错误。App.tsx
customEndpoints 把各类数据指向你自己的上报地址:
采集页面视图
SDK 不会自动识别路由,需要按你使用的导航库接入视图采集。- 手动管理
采集用户操作
初始化时trackInteractions 为 true,SDK 会自动把带 onPress 的组件点击记录为 action。默认使用组件的 accessibilityLabel 作为操作名;也可以通过 dd-action-name 属性指定:
采集网络请求
初始化时trackResources 为 true,SDK 会拦截 JS 层的 XMLHttpRequest 与 fetch,把每次请求记录为 RUM resource(URL、方法、状态码、耗时)。
SDK 只能看到 经过 JavaScript 发出的请求。
<Image> 等由原生网络栈加载的资源不会被采集,所有采集到的请求也一律记为 xhr 类型。因此控制台对 React Native 应用不展示「静态资源」相关面板,这是采集边界,不是数据缺失。详见 数据收集。firstPartyHosts,SDK 会对命中的域名注入追踪头。详见 高级配置。
关联用户信息
登录后设置当前用户,SDK 会把用户字段写入后续 RUM 事件的usr 对象。请务必传入 id:iOS 端会忽略没有 id 的调用。
上报错误
初始化时trackErrors 为 true,SDK 会自动采集未处理的 JS 异常;nativeCrashReportEnabled 为 true 时还会采集原生 Android / iOS 崩溃。你也可以手动上报捕获到的异常:
release 包的 JS 堆栈是压缩过的,需要上传 source map 才能还原到源码文件与行号。Android 可在 Gradle 构建中自动上传,iOS 通过 FlashCat CLI 上传;每次发布都会生成新的 bundle,需要重新上传对应的 source map。原生崩溃是另一套:需要上传 iOS 的 dSYM 与(开启混淆时)Android 的 mapping 文件。两者详见 高级配置。
验证接入
完成接入后,可以按以下方式验证:- 在初始化时临时设置
config.verbosity = SdkVerbosity.DEBUG,通过 Metro / Xcode / logcat 日志查看 SDK 上报行为 - 运行应用并触发页面切换、点击、网络请求或手动错误
- 在 Flashduty RUM 应用中筛选
source:react-native,确认出现 view、action、resource 或 error 事件 - 在控制台确认 Android 与 iOS 的数据都落在同一个
service下
下一步
高级配置
配置采样率、隐私同意、事件过滤、追踪和 source map 上传。
兼容性
了解支持的平台、React Native 版本、伴生包和当前限制。
数据收集
查看 SDK 自动和手动采集的事件类型、性能指标与采集边界。