概要
iOSやAndroidでクラッシュ情報を収集するために、FirebaseCrashlyticsを利用されている方は多いと思います。
FirebaseCrashlyticsはデフォルトではクラッシュレポートの収集・送信を全て自動的に行ってくれますが、
- ユーザーの同意を得た上で収集&送信をしたい
- 収集&送信をコントロールしたい
など、開発者側でコントロールをしたいというニーズが発生することがあるかと思います。
この記事では、これらのコントロールを行う方法を紹介させていただきたいと思います。
前提
本記事はFirebaseCrashlytics 8.0.0 の情報を元に記載しています。
今後のバージョンアップなどにより動作が異なる場合があるので、ご注意ください。
クラッシュレポートの自動収集を停止する
クラッシュレポートの自動収集を停止するには、以下のいずれかの対応が必要です。
-
Info.plist
の FirebaseCrashlyticsCollectionEnabled キーに対して、false(Bool値) を設定する -
setCrashlyticsCollectionEnabled
をプロダクト内で実行しfalseの設定を行う
false値が適用されるタイミングに注意してください。詳しくは公式のドキュメント参照。
クラッシュレポートの送信をコントロールする
上述の自動収集が停止されている場合に、
- checkForUnsentReports(completion:)
- sendUnsentReports()
- deleteUnsentReports()
の関数を利用してコントロールを行うことができます。
iOS Reference
Android Reference
オプトインオプトアウトに関する記述
上記ドキュメントにも記載がある通り、データ収集を無効にした場合でもクラッシュ情報はローカル保存されています。
その後データ収集が有効になった際に、保存された全てのクラッシュ情報がFirebaseCrashlyticsに送信されるので注意してください。
FirebaseCrashlyticsに送信しているクラッシュ以外のレポートについて
FirebaseCrashlyticsには、致命的でない例外を報告することができます。
致命的でない例外を報告する
このレポートについても、
上述の[自動収集を停止する] 作業を行うことで自動的に送信されないようになります。
これら機能を実装する上での注意点
APIリファレンスには非常にざっくりと各機能に関する記載はあるのですが、
詳細な使い方などに関する説明はかなり不足している(かつiOS/Androidで書いてある内容も少し違う)ので、
リファレンスを参考にしつつ、実動作をしっかりと確認しながら組み込みを行うようにする必要があります。