Crashlytics
class Crashlytics : NSObjectThe Firebase Crashlytics API provides methods to annotate and manage fatal and non-fatal reports captured and reported to Firebase Crashlytics.
By default, Firebase Crashlytics is initialized with FirebaseApp.configure().
Note: The Crashlytics class cannot be subclassed. If this makes testing difficult, we suggest using a wrapper class or a protocol extension.
- 
                  
                  Accesses the singleton Crashlytics instance. DeclarationSwift class func crashlytics() -> SelfReturn ValueThe singleton Crashlytics instance. 
- 
                  
                  Adds logging that is sent with your crash data. The logging does not appear in app logs and is only visible in the Crashlytics dashboard. DeclarationSwift func log(_ msg: String)ParametersmsgMessage to log 
- 
                  
                  Adds logging that is sent with your crash data. The logging does not appear in app logs and is only visible in the Crashlytics dashboard. ParametersformatThe format of the string, followed by a comma-separated list of arguments to substitute into the format. 
- 
                  
                  Adds logging that is sent with your crash data. The logging does not appear in app logs and is only visible in the Crashlytics dashboard. DeclarationSwift func log(format: String, arguments args: CVaListPointer)ParametersformatFormat of string argsArguments to substitute into format 
- 
                  
                  Sets a custom key and value to be associated with subsequent fatal and non-fatal reports. When setting an object value, the object is converted to a string. This is typically done by using the object’s description.DeclarationSwift func setCustomValue(_ value: Any?, forKey key: String)ParametersvalueThe value to be associated with the key keyA unique key 
- 
                  
                  Sets custom keys and values to be associated with subsequent fatal and non-fatal reports. The objects in the dictionary are converted to strings. This is typically done by using the object’s description.DeclarationSwift func setCustomKeysAndValues(_ keysAndValues: [AnyHashable : Any])ParameterskeysAndValuesThe values to be associated with the corresponding keys 
- 
                  
                  Records a user ID (identifier) that’s associated with subsequent fatal and non-fatal reports. If you want to associate a crash with a specific user, we recommend specifying an arbitrary string (e.g., a database, ID, hash, or other value that you can index and query, but is meaningless to a third-party observer). This allows you to facilitate responses for support requests and reach out to users for more information. DeclarationSwift func setUserID(_ userID: String?)ParametersuserIDAn arbitrary user identifier string that associates a user to a record in your system. 
- 
                  
                  Records a non-fatal event described by an Error object. The events are grouped and displayed similarly to crashes. Keep in mind that this method can be expensive. The total number of Errors that can be recorded during your app’s life-cycle is limited by a fixed-size circular buffer. If the buffer is overrun, the oldest data is dropped. Errors are relayed to Crashlytics on a subsequent launch of your application. DeclarationSwift func record(error: any Error)ParameterserrorNon-fatal error to be recorded 
- 
                  
                  Records a non-fatal event described by an NSError object. The events are grouped and displayed similarly to crashes. Keep in mind that this method can be expensive. The total number of NSErrors that can be recorded during your app’s life-cycle is limited by a fixed-size circular buffer. If the buffer is overrun, the oldest data is dropped. Errors are relayed to Crashlytics on a subsequent launch of your application. DeclarationSwift func record(error: any Error, userInfo: [String : Any]? = nil)ParameterserrorNon-fatal error to be recorded userInfoAdditional keys and values to send with the logged error. These keys and values are added to the error, in addition to the Crashlytics global list of keys and values. 
- 
                  
                  Records an Exception Model described by an ExceptionModel object. The events are grouped and displayed similarly to crashes. Keep in mind that this method can be expensive. The total number of ExceptionModels that can be recorded during your app’s life-cycle is limited by a fixed-size circular buffer. If the buffer is overrun, the oldest data is dropped. ExceptionModels are relayed to Crashlytics on a subsequent launch of your application. DeclarationSwift func record(exceptionModel: ExceptionModel)ParametersexceptionModelInstance of the ExceptionModel to be recorded 
- 
                  
                  Returns whether the app crashed during the previous execution. DeclarationSwift func didCrashDuringPreviousExecution() -> Bool
- 
                  
                  Enables/disables automatic data collection. Calling this method overrides both the FirebaseCrashlyticsCollectionEnabled flag in your App’s Info.plist and FirebaseApp’s isDataCollectionDefaultEnabled flag. When you set a value for this method, it persists across runs of the app. The value does not apply until the next run of the app. If you want to disable data collection without rebooting, add the FirebaseCrashlyticsCollectionEnabled flag to your app’s Info.plist. * DeclarationSwift func setCrashlyticsCollectionEnabled(_ enabled: Bool)ParametersenabledDetermines whether automatic data collection is enabled 
- 
                  
                  Indicates whether or not automatic data collection is enabled This method uses three ways to decide whether automatic data collection is enabled, in order of priority: - If setCrashlyticsCollectionEnabled is called with a value, use it
- If the FirebaseCrashlyticsCollectionEnabled key is in your app’s Info.plist, use it
- Otherwise, use the default isDataCollectionDefaultEnabled in FirebaseApp
 DeclarationSwift func isCrashlyticsCollectionEnabled() -> Bool
- 
                  
                  Determines whether there are any unsent crash reports cached on the device, then calls the given callback. The callback only executes if automatic data collection is disabled. You can use the callback to get one-time consent from a user upon a crash, and then call sendUnsentReports or deleteUnsentReports, depending on whether or not the user gives consent. Disable automatic collection by: - Adding the FirebaseCrashlyticsCollectionEnabledkey with the value set to NO to your app’s Info.plist
- Calling FirebaseCrashlytics.crashlytics().setCrashlyticsCollectionEnabled(false)in your app
- Setting - FirebaseApp‘s- isDataCollectionDefaultEnabledto false
 DeclarationSwift func checkForUnsentReports() async -> BoolParameterscompletionThe callback that’s executed once Crashlytics finishes checking for unsent reports. The callback is set to true if there are unsent reports on disk. 
- Adding the 
- 
                  
                  Determines whether there are any unsent crash reports cached on the device, then calls the given callback with a CrashlyticsReport object that you can use to update the unsent report. CrashlyticsReports have a lot of the familiar Crashlytics methods like setting custom keys and logs. The callback only executes if automatic data collection is disabled. You can use the callback to get one-time consent from a user upon a crash, and then call sendUnsentReports or deleteUnsentReports, depending on whether or not the user gives consent. Disable automatic collection by: - Adding the FirebaseCrashlyticsCollectionEnabledkey with the value set to NO to your app’s Info.plist
- Calling FirebaseCrashlytics.crashlytics().setCrashlyticsCollectionEnabled(false)in your app
- Setting FirebaseApp‘sisDataCollectionDefaultEnabledto false
 Not calling sendUnsentReports()/deleteUnsentReports()will result in the report staying on disk, which means the same CrashlyticsReport can show up in multiple runs of the app. If you want avoid duplicates, ensure there was a crash on the last run of the app by checking the value ofdidCrashDuringPreviousExecution.DeclarationSwift func checkAndUpdateUnsentReports() async -> CrashlyticsReport?ParameterscompletionThe callback that’s executed once Crashlytics finishes checking for unsent reports. The callback is called with the newest unsent Crashlytics Report, or nil if there are none cached on disk. 
- Adding the 
- 
                  
                  Enqueues any unsent reports on the device to upload to Crashlytics. This method only applies if automatic data collection is disabled. When automatic data collection is enabled, Crashlytics automatically uploads and deletes reports at startup, so this method is ignored. DeclarationSwift func sendUnsentReports()
- 
                  
                  Deletes any unsent reports on the device. This method only applies if automatic data collection is disabled. DeclarationSwift func deleteUnsentReports()