2021/05/11
SwiftUIでFirebase Crashlyticsを導入する
SwiftUIベースのiOSアプリにCrashlyticsを導入しました。
毎回似たような作業をするので、ログを残しておきます。
Firebaseプロジェクトを作成して設定ファイルをダウンロードする
ここをみて作業します。
- Firebaseコンソールでプロジェクトを作成します(webアプリで利用しているGCPプロジェクトがあったため、それに紐づけて作成)
- 作ったFirebaseプロジェクトでiOSアプリを作成する
- 設定ファイル「
GoogleService-Info.plist
」をダウンロードしてiOSプロジェクトに追加します。 - FirebaseコンソールでCrashlyticsを有効にする
Firebase SDKのインストール
SwiftPackageManagerでのインストールの方法を参照してインストールを実施
https://github.com/firebase/firebase-ios-sdk.git
をSwift package managerで登録(以下のモジュールを追加)(バージョンは 7.11.1)- FirebaseAnalytics
- FirebaseCrashlytics
- FirebaseAnalyticsを追加したので、
-ObjC
オプションをBuild Settings
のOther Linker Flags
に追加 - FirebaseCrashlytics用にビルド後にdSYMファイルをアップロードします
Build Phases
にてRun Script Phase
を追加して以下を実行するようにします。${BUILD_DIR%Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run
- 以下を
Input files
に追加します${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
- Debugビルド時でもCrashlyticsを利用できるように以下の設定を変更します
Build Settings
のDebug Information Format
でDebug
のものをDWARF with dSYM File
に変更
実装
SwiftUIだと以下のような感じになりました。
UIApplicationDelegateAdaptor
を利用してAppDelegateを作成- AppDelegateのなかで
FirebaseApp.configure()
を実行
import SwiftUI
import Firebase
@main
struct Application: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
FirebaseApp.configure()
return true
}
}
強制クラッシュ
押すと強制的にエラーになるボタンを配置して、起動後に押します。
import SwiftUI
struct ContentView: View {
var body: some View {
Button(action: {
fatalError()
}) {
Text("Click me to raise error!")
}
}
}
うまくいくと、Firebaseコンソールに発生したエラーが確認できます。
以上です。
関連する記事
[Jetpack Compose]Analytics / Crashlytics / FCMを導入
FirebaseをJetpack Composeアプリに導入して、プッシュ通知を受取り対応する画面を開くようにしました。またAnalyticsやCrashlyticsも同時に導入しました。
SwiftUIを使った開発のノウハウをまとめたiOSアプリをリリースしました
Kumanoteでよく使うSwiftUIコンポーネントの作り方をソースコードと共に公開しています。
SwiftUIでswiftのコードのシンタックスハイライトを表示する
SwiftのコードをSwiftUIベースのアプリでシンタックスハイライトされた状態で見れるViewを作ってみました
Tailwindcssで定義されている色からSwiftUI版の定義を自動生成する
Tailwindcssで定義されている便利な色たちをSwiftUIアプリでも利用したいので、jsonで定義されている色をSwiftUI Colorsの変数に変換するスクリプトを作りました