向服務報告錯誤
如何追蹤使用者遇到的錯誤。
雖然我們總是努力建立沒有 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 示例應用。