Firebase Diagnostics

Monitoraggio Crash e Prestazioni iOS con Firebase Crashlytics e Performance Monitoring

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.

Yunus Diallo (DialloDev)

Fondatore di Dywtal Digital a Parma (Italia), sviluppatore iOS ed ingegnere del software specializzato nel controllo qualità e stabilità delle applicazioni.