はじめに
Firebase Crashlyticsをアプリに導入したので、その設定方法について備忘録として記載します。
事前設定
事前設定として以下の作業を行ってください。
・Firebaseプロジェクトの作成
・プロジェクトをFirebaseと紐付け
パッケージのインストール
firebase_crashlyticsをインストールします。
dependencies:
firebase_crashlytics: ^4.0.4
実装
Crashlytics用のクラスを作成をします。
import 'dart:ui';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/material.dart';
class CrashlyticsHandler {
static Future<void> setup() async {
// Flutter フレームワーク内のエラーを全てキャッチ
FlutterError.onError = (details) {
FlutterError.presentError(details);
FirebaseCrashlytics.instance.recordFlutterFatalError(details);
};
// フレームワークで捕捉されなかった非同期エラー
PlatformDispatcher.instance.onError = (error, stack) {
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
return true;
};
}
/// ログを出力
static log(String message) {
FirebaseCrashlytics.instance.log(message);
}
/// アプリを強制的にクラッシュさせる
static crash(String message) {
FirebaseCrashlytics.instance.crash();
}
}
main.dartからCrashlytics用のクラスのsetupを呼び出します。
以上で、Crashlyticsの設定は完了です。
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:test_project/cashlytics_handler/crashlytics_handler.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
// Crashlyticsの設定
await CrashlyticsHandler.setup();
runApp(const MyApp());
}
動作テスト
以下のように、crash()を実行するボタンを設置すると、テストでクラッシュを発生させることができます。
// アプリをクラッシュさせるボタン
ElevatedButton(
onPressed: () {
CrashlyticsHandler.log('ログ');
CrashlyticsHandler.crash();
},
child: const Text('クラッシュボタン'),
),
参考
告知
最後にお知らせとなりますが、イーディーエーでは一緒に働くエンジニアを
募集しております。詳しくは採用情報ページをご確認ください。
みなさまからのご応募をお待ちしております。