Mantenere un tasso di sessioni esenti da crash (*Crash-Free User Rate*) superiore al 99.5% è un requisito fondamentale per posizionarsi bene su App Store e trattenere gli utenti. **Firebase Crashlytics** e **Firebase Performance Monitoring** consentono di tracciare in tempo reale errori fatali, eccezioni silenziose e rallentamenti di rete.
1. Registrazione di Errori Non Fatali e Metadata Personalizzati
Oltre a catturare automaticamente i crash di sistema (fatal crashes), Crashlytics permette di registrare errori gestiti nel blocco do-catch senza interrompere l'esperienza utente:
import FirebaseCrashlytics
func logNonFatalError(error: Error, context: String) {
let crashlytics = Crashlytics.crashlytics()
// Aggiunta di chiavi personalizzate per contestualizzare il problema
crashlytics.setCustomValue(context, forKey: "last_user_action")
crashlytics.setCustomValue(TimeZone.current.identifier, forKey: "time_zone")
// Registrazione dell'errore gestito
crashlytics.record(error: error)
}
2. Tracciare le Prestazioni di Operazioni Custom (Metric Traces)
Con **Firebase Performance Monitoring** possiamo misurare il tempo esatto impiegato per completare operazioni complesse (come l'elaborazione di un file audio o una query di decodifica JSON):
import FirebasePerformance
func processHeavyDataTask() {
// Inizio della traccia di prestazione
let trace = Performance.startTrace(name: "heavy_data_processing")
// Esecuzione algoritmo
doProcessingWork { result in
// Aggiunta di metriche custom
trace?.setValue("\(result.count)", forAttribute: "items_processed")
// Fine della traccia
trace?.stop()
}
}
3. Caricamento Automatico dSYM per Deobfuscation Stack Trace
Affinché lo stack trace di un crash su apparati di produzione sia leggibile in chiaro (e non in indirizzi di memoria esadecimali), occorre aggiungere uno script di Run Phase nel progetto Xcode per inviare i file dSYM a Firebase:
"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
Conclusione
Un sistema di tracciamento diagnostico continuo permette di identificare e risolvere i bug prima che influenzino negativamente le recensioni su App Store. Per ottimizzare le prestazioni e la stabilità della tua app iOS, contatta diallooyunus@gmail.com.