设置会话重放
学习如何在你的移动应用中启用会话重放。
会话重放 可以帮助你更快地找到错误或延迟问题的根本原因,通过提供用户设备在问题发生前、期间和之后的情况的重现。你可以回放应用程序的状态,并在一个 UI 中查看关键用户交互,如点击、滑动、网络请求和控制台条目。
默认情况下,我们的会话重放 SDK 会屏蔽所有文本内容、图像和用户输入,确保没有敏感数据离开设备。了解更多,请参阅 产品文档。
确保你的 Sentry React Native SDK 版本至少为 6.5.0。
如果你已经安装了 SDK,你可以使用以下命令将其更新到最新版本:
npm install @sentry/react-native --save
要设置集成,请将以下内容添加到你的 Sentry 初始化代码中。
import * as Sentry from "@sentry/react-native";
Sentry.init({
dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
replaysSessionSampleRate: 0.1,
replaysOnErrorSampleRate: 1.0,
integrations: [Sentry.mobileReplayIntegration()],
});
在测试时,我们建议你将 replaysSessionSampleRate
设置为 1.0
。这确保每个用户会话都会发送到 Sentry。
测试完成后,我们建议在生产环境中降低这个值。我们仍然建议保持 replaysOnErrorSampleRate
设置为 1.0
。
采样允许你控制有多少网站流量会生成会话重放。你可以调整两个采样率以获取对你有用的重放:
replaysSessionSampleRate
- 从会话开始立即记录并持续整个用户会话的重放缓存的采样率。replaysOnErrorSampleRate
- 在错误发生时记录的重放缓存的采样率。这种类型的重放会记录错误前最多一分钟的事件,并继续记录直到会话结束。
采样从会话开始时就开始。replaysSessionSampleRate
优先评估。如果被采样,重放记录将开始。否则,replaysOnErrorSampleRate
将被评估,如果被采样,集成将开始缓冲重放,并且只有在错误发生时才会上传到 Sentry。其余的重放行为类似于整个会话重放。
SDK 默认记录并积极屏蔽所有文本、图像和 Web 视图。如果你的应用程序包含任何敏感数据,你应该仅在明确屏蔽所有敏感数据后才关闭默认屏蔽,使用下面描述的 API。 然而,如果你正在开发一个不包含任何个人身份信息 (PII) 或私人数据的移动应用程序,你可以选择退出默认的文本和图像屏蔽设置。要了解更多关于会话重放隐私的信息,请参阅 我们的文档。
如果你发现任何数据没有按照默认设置被屏蔽,请通过 GitHub issue 告知我们。
要完全禁用屏蔽(不应用于包含敏感数据的应用程序):
// You can pass options to the mobileReplayIntegration function during init:
integrations: [
Sentry.mobileReplayIntegration({
maskAllText: false,
maskAllImages: false,
maskAllVectors: false,
}),
];
Sentry 帮助你捕获 React 组件并在你的应用程序中解锁更多见解。你可以设置它以使用 React 组件名称。
这样你看到的就不是这样的:
View > Touchable > View > Text
你还可以精确看到使用了哪个 React 组件,例如:
MyCard (View, MyCard.ts) > MyButton (Touchable, MyCard.ts) > View > Text
要添加 React 组件名称,请在 metro.config.js
中使用 annotateReactComponents
。
const { getDefaultConfig } = require("@react-native/metro-config");
const { withSentryConfig } = require("@sentry/react-native/metro");
module.exports = withSentryConfig(getDefaultConfig(__dirname), {
annotateReactComponents: true,
});
在重放运行期间发生的错误将与该重放关联,使得可以在相关问题和重放之间跳转。然而,在某些情况下,重放缓解详情页面上报告的错误数量可能与实际捕获的错误不匹配。这是因为错误可能会丢失,虽然这种情况不常见,但有几种原因可能导致:
- 重放缓存被限流,无法接受。
- 重放被你组织的成员删除。
- 网络错误导致重放未保存。