なおさんのブログ

iOSエンジニアのブログのはずがいろいろ書いてます。

OSアプリでCrashlyticsをカスタマイズしてログを保存する

最初に

Firebaseにはアプリのクラッシュを監視するCrashlyticsという機能があります。ただ標準クラッシュ以外も監視したいとなると自分でいろいろ実装する必要が出てきます。ということでいろいろ調べてみました。

Crashlyticsの基本的な導入部分は公式ドキュメントを見て実装してください。

Crashlytics公式ドキュメント https://firebase.google.com/docs/crashlytics?hl=ja

クラッシュに情報を追加する

以下のような実装をするとクラッシュした際に情報を追加することができます。

[swiftのソース]

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    FirebaseApp.configure()

    // key value形式での情報
    Crashlytics.crashlytics().setCustomValue("str_value", forKey: "str_key")

    // dictionary形式での情報
    let keysAndValues = [
        "str_key1" : "str_value1",
        "str_key2" : "str_value2"]
    Crashlytics.crashlytics().setCustomKeysAndValues(keysAndValues)

    // 単純なテキスト(ログ)
    Crashlytics.crashlytics().log("log text")

    // ユーザーID
    Crashlytics.crashlytics().setUserID("nao123456")

    return true
}

こんな感じで追加した情報が出てきます f:id:naohirotk:20210601164111p:plain f:id:naohirotk:20210601164129p:plain f:id:naohirotk:20210601164141p:plain

クラッシュ以外のタイミングで情報を送信する

クラッシュ以外のタイミングでも送信することができます

let error = NSError(domain: NSCocoaErrorDomain, code: -123, userInfo: nil)
Crashlytics.crashlytics().record(error: error)

非致命的なイベントとしてこんな感じで出てきます f:id:naohirotk:20210601164447p:plain

まとめ

普段Crashlyticsを使っていれば簡単に実装できます。 クラッシュを監視したりもできるので今後は積極的に使っていきたいと思います。

より詳しいことを知りたい方は公式ドキュメントをご覧ください

Firebase Crashlytics のクラッシュ レポートのカスタマイズ(公式ドキュメント) https://firebase.google.com/docs/crashlytics/customize-crash-reports?authuser=0&platform=ios