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") } 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"),