[Xcode/SwiftUI] Firebase Crashlyticsでクラッシュログを送信する

Firebaseの初期設定は完了している前提です。

実装

Xcodeの設定

dSYM出力設定

Build Settingsdebug information Formatで検索 → 全てDWARF with dSYM Fileにする

Edit Scheme

Edit Scheme → Run → Arguments内に-FIRDebugEnabledを追加

ファイルの自動アップロード

Build Phases → 左上の+ボタンからNew Run Script Phaseを選択

Shell以下にこれを記述

// Podの場合
"${PODS_ROOT}/FirebaseCrashlytics/run"

// SPMの場合
"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"

Input Filesには以下の2つを追加

${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
ビルド確認

一旦Command + B (or R)でビルドして通ればOKです。

実際にクラッシュさせる

fatalErrorを使って、Buttonが押された時に意図的にクラッシュさせる

import SwiftUI

struct HomeView: View {
    var body: some View {
        Button {
            fatalError("This is a test crash for Firebase Crashlytics.")
        } label: {
            Text("Crashテスト")
        }
    }
}

Command + Rで実行、実行可能状態になったら停止ボタンを押してアプリを開き直す。(Xcodeのデバッグモードだとクラッシュレポートが送信されないため)

Buttonを押してクラッシュさせる、その後Crashlyticsコンソールを確認。

少し時間が経つとクラッシュログが表示されるようになります。