向服务报告错误
如何追踪用户遇到的错误。
虽然我们总是努力创建没有 Bug 的应用,但 Bug 总会不时出现。由于有 Bug 的应用会导致用户和客户不满,因此了解用户遇到 Bug 的频率以及这些 Bug 发生的位置非常重要。这样,你就可以确定 Bug 的优先级并致力于修复影响最大的那些问题。
如何确定用户遇到 Bug 的频率?每当发生错误时,创建一个包含该错误及相关堆栈跟踪信息的报告。然后,你可以将该报告发送到错误跟踪服务,例如 Bugsnag、Datadog、Firebase Crashlytics、Rollbar 或 Sentry。
错误跟踪服务会汇总用户遇到的所有崩溃信息并将它们归类。这能让你了解应用发生故障的频率以及用户在何处遇到了问题。
在本方案中,你将通过以下步骤学习如何向 Sentry 崩溃报告服务报告错误
- 从 Sentry 获取 DSN。
- 导入 Flutter Sentry 包
- 初始化 Sentry SDK
- 以编程方式捕获错误
1. 从 Sentry 获取 DSN
#在向 Sentry 报告错误之前,你需要一个“DSN”来在 Sentry.io 服务中唯一标识你的应用。
要获取 DSN,请执行以下步骤
- 创建一个 Sentry 账户.
- 登录账户。
- 创建一个新的 Flutter 项目。
- 复制包含 DSN 的代码片段。
2. 导入 Sentry 包
#将 sentry_flutter 包导入应用。Sentry 包可以更轻松地将错误报告发送到 Sentry 错误跟踪服务。
要将 sentry_flutter 包添加为依赖项,请运行 flutter pub add
flutter pub add sentry_flutter
3. 初始化 Sentry SDK
#初始化 SDK 以自动捕获各种未处理的错误
import 'package:flutter/widgets.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
Future<void> main() async {
await SentryFlutter.init(
(options) => options.dsn = 'https://example@sentry.io/example',
appRunner: () => runApp(const MyApp()),
);
}
或者,你也可以使用 dart-define 标签将 DSN 传递给 Flutter
--dart-define SENTRY_DSN=https://example@sentry.io/example
这能为我带来什么?
#这就是 Sentry 捕获 Dart 层和原生层未处理错误所需的全部配置。这包括 iOS 上的 Swift、Objective-C、C 和 C++,以及 Android 上的 Java、Kotlin、C 和 C++。
4. 以编程方式捕获错误
#除了通过导入和初始化 SDK 实现的自动错误报告外,你还可以使用 API 向 Sentry 报告错误
await Sentry.captureException(exception, stackTrace: stackTrace);
有关更多信息,请参阅 pub.dev 上的 Sentry API 文档。
了解更多
#关于使用 Sentry SDK 的详细文档可以在 Sentry 官网找到。
完整示例
#要查看工作示例,请参阅 Sentry flutter 示例应用。