DdSdkReactNativeConfiguration 实例的属性设置,在 DdSdkReactNative.initialize(config) 之前完成。
采样率
隐私同意
TrackingConsent 控制是否采集与上报数据,适配 GDPR 等合规要求:
事件过滤与脱敏
事件映射器在事件上报前执行,返回null 丢弃事件,或修改后返回。可用于脱敏敏感字段、去除噪声。
分布式追踪
对firstPartyHosts 命中的域名(含子域名),SDK 会在 XHR / fetch 请求上注入追踪头,实现前端 RUM 与后端 APM 的链路关联。默认同时注入 W3C traceparent 与 Datadog 格式头;可以按域名指定 propagatorTypes。
自定义上报地址
私有化部署时,通过customEndpoints 分别覆盖 RUM、Logs 的上报地址:
WebView 追踪
应用内嵌 WebView 时,用@flashcatcloud/mobile-react-native-webview 导出的 WebView 替换 react-native-webview,即可把 WebView 中的 Browser RUM 事件关联到当前原生 RUM 会话。
allowedHosts 是允许关联的主机名列表,会匹配其子域名。WebView 加载的页面必须已经接入 Flashduty Browser SDK。该组件完整兼容 react-native-webview 的属性。
Source map 上传
release 包的 JS 堆栈是压缩过的,需要上传 source map 才能在控制台还原到源码文件与行号。服务端按 service + 版本号 + bundle 文件名 匹配 source map,因此上传时使用的 service 与版本必须和 SDK 上报的一致。SDK 上报的版本号默认取应用的版本(Android
versionName、iOS CFBundleShortVersionString),也可以通过 config.version 覆盖;覆盖后上传时必须使用同一个值。Metro 的 debug ID 插件不是必需的。- Android
- iOS
在 构建时通过环境变量提供有 source map 上传权限的 API key:上传行为(
android/app/build.gradle 中引入随包下发的 Gradle 脚本。它会挂在 release 打包任务之后,bundle 生成后自动调用 FlashCat CLI 上传 source map。android/app/build.gradle
0.1.1 起):每次改动 JS 代码都会生成新的 bundle,source map 上传必须纳入每一次发布构建,否则该版本的堆栈会保持压缩状态。原生崩溃走另一套符号文件,见下一节。
原生崩溃符号化
RN 应用的崩溃分两类,用的符号文件也是两套:JS 异常靠 source map(上一节);原生崩溃由底层的 Android / iOS SDK 采集,靠 mapping 文件与 dSYM 还原。前提:开启原生崩溃采集
nativeCrashReportEnabled 默认为 false。不开启时,原生崩溃既不会上报也不会有任何提示——控制台里看不到任何记录,和”没发生过”完全一样。
构造函数的第 4~6 个位置参数是 trackInteractions / trackResources / trackErrors,不是这个开关,必须单独赋值:
需要上传什么
- Android
- iOS
RN 模板默认不开启混淆(含 NDK 原生代码时,同一插件会一并上传 NDK 符号文件。详见 源码映射。
enableProguardInReleaseBuilds = false),此时 release 包的 Java 堆栈本身就是可读的类名与方法名,不上传 mapping 也能定位。一旦在 android/app/build.gradle 中开启混淆,堆栈会变成 MainActivity.o0(SourceFile:5) 这样的短名,必须上传 mapping 文件才能还原。上传方式与 Android SDK 完全一致——引入 Flashcat Android Gradle 插件,随 release 构建自动上传:android/app/build.gradle