设置会话重放

学习如何在你的移动应用中启用会话重放。

会话重放 可以帮助你更快地找到错误或延迟问题的根本原因,通过提供用户设备在问题发生前、期间和之后的情况的重现。你可以回放应用程序的状态,并在一个 UI 中查看关键用户交互,如点击、滑动、网络请求和控制台条目。

默认情况下,我们的会话重放 SDK 会屏蔽所有文本内容、图像和用户输入,确保没有敏感数据离开设备。了解更多,请参阅 产品文档

确保你的 Sentry React Native SDK 版本至少为 6.5.0。

如果你已经安装了 SDK,你可以使用以下命令将其更新到最新版本:

Copied
npm install @sentry/react-native --save

要设置集成,请将以下内容添加到你的 Sentry 初始化代码中。

Copied
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

采样允许你控制有多少网站流量会生成会话重放。你可以调整两个采样率以获取对你有用的重放:

  1. replaysSessionSampleRate - 从会话开始立即记录并持续整个用户会话的重放缓存的采样率。
  2. replaysOnErrorSampleRate - 在错误发生时记录的重放缓存的采样率。这种类型的重放会记录错误前最多一分钟的事件,并继续记录直到会话结束。

采样从会话开始时就开始。replaysSessionSampleRate 优先评估。如果被采样,重放记录将开始。否则,replaysOnErrorSampleRate 将被评估,如果被采样,集成将开始缓冲重放,并且只有在错误发生时才会上传到 Sentry。其余的重放行为类似于整个会话重放。

SDK 默认记录并积极屏蔽所有文本、图像和 Web 视图。如果你的应用程序包含任何敏感数据,你应该仅在明确屏蔽所有敏感数据后才关闭默认屏蔽,使用下面描述的 API。 然而,如果你正在开发一个不包含任何个人身份信息 (PII) 或私人数据的移动应用程序,你可以选择退出默认的文本和图像屏蔽设置。要了解更多关于会话重放隐私的信息,请参阅 我们的文档

如果你发现任何数据没有按照默认设置被屏蔽,请通过 GitHub issue 告知我们。

要完全禁用屏蔽(不应用于包含敏感数据的应用程序):

Copied
// You can pass options to the mobileReplayIntegration function during init:
integrations: [
  Sentry.mobileReplayIntegration({
    maskAllText: false,
    maskAllImages: false,
    maskAllVectors: false,
  }),
];

Sentry 帮助你捕获 React 组件并在你的应用程序中解锁更多见解。你可以设置它以使用 React 组件名称。

这样你看到的就不是这样的:

Copied
View > Touchable > View > Text

你还可以精确看到使用了哪个 React 组件,例如:

Copied
MyCard (View, MyCard.ts) > MyButton (Touchable, MyCard.ts) > View > Text

要添加 React 组件名称,请在 metro.config.js 中使用 annotateReactComponents

Copied
const { getDefaultConfig } = require("@react-native/metro-config");
const { withSentryConfig } = require("@sentry/react-native/metro");
module.exports = withSentryConfig(getDefaultConfig(__dirname), {
  annotateReactComponents: true,
});

在重放运行期间发生的错误将与该重放关联,使得可以在相关问题和重放之间跳转。然而,在某些情况下,重放缓解详情页面上报告的错误数量可能与实际捕获的错误不匹配。这是因为错误可能会丢失,虽然这种情况不常见,但有几种原因可能导致:

  • 重放缓存被限流,无法接受。
  • 重放被你组织的成员删除。
  • 网络错误导致重放未保存。