From eff4dd2136a050315335c5001ef8fc2fa439dade Mon Sep 17 00:00:00 2001 From: TomBumSuChoi Date: Thu, 7 May 2026 17:08:33 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat(crashlytics):=20Clients=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20+=20Script=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Project.swift | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Project.swift b/Project.swift index e05177bc..b02a050e 100644 --- a/Project.swift +++ b/Project.swift @@ -49,6 +49,7 @@ let project = Project( .external(name: "FirebaseFirestore"), .external(name: "FirebaseStorage"), .external(name: "FirebaseMessaging"), + .external(name: "FirebaseCrashlytics"), .external(name: "GoogleSignIn"), .external(name: "GoogleSignInSwift") ] @@ -109,6 +110,18 @@ let project = Project( "com.apple.developer.applesignin": .array(["Default"]), "aps-environment": .string("production") ]), + scripts: [ + .post( + script: """ + "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run" + """, + name: "Firebase Crashlytics dSYM Upload", + inputPaths: [ + "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}", + "$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)" + ] + ) + ], dependencies: [ .target(name: "Domain"), .target(name: "Clients"), From 4ad4cd184dc79c19dfe46bbacf51cf6a9fef1c5a Mon Sep 17 00:00:00 2001 From: TomBumSuChoi Date: Thu, 7 May 2026 17:08:50 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat(crashlytics):=20Auth=20UID=20setUserID?= =?UTF-8?q?=20=EC=97=B0=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Clients/Bootstrap.swift | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Clients/Bootstrap.swift b/Clients/Bootstrap.swift index 3e520750..52b9dca5 100644 --- a/Clients/Bootstrap.swift +++ b/Clients/Bootstrap.swift @@ -1,6 +1,7 @@ import Domain @preconcurrency import FirebaseAuth import FirebaseCore +@preconcurrency import FirebaseCrashlytics @preconcurrency import FirebaseFirestore @preconcurrency import FirebaseMessaging import GoogleSignIn @@ -13,12 +14,21 @@ public enum AppBootstrap { public static func configure() { FirebaseApp.configure() + #if DEBUG + Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(false) + #endif + if let clientID = FirebaseApp.app()?.options.clientID { GIDSignIn.sharedInstance.configuration = GIDConfiguration(clientID: clientID) } Messaging.messaging().delegate = notificationCoordinator UNUserNotificationCenter.current().delegate = notificationCoordinator + + Auth.auth().addStateDidChangeListener { _, user in + Crashlytics.crashlytics().setUserID(user?.uid ?? "") + } + AppLogger.info("AppBootstrap configured") }