Introdução: Por que o monitoramento é crítico para aplicativos Swift
Aplicativos modernos em Swift para iOS e macOS operam em um ambiente altamente competitivo. Os usuários esperam resposta instantânea, operação estável e ausência de falhas. Sem um sistema de monitoramento, você corre o risco de descobrir uma queda de servidor ou erro crítico somente após reclamações de clientes. Neste artigo, vamos analisar como organizar um monitoramento eficaz de aplicativos Swift: quais métricas coletar, como configurar alertas e automatizar processos.
1. Métricas-chave para aplicativos Swift
O monitoramento começa com a escolha das métricas corretas. Para aplicativos iOS e macOS, é importante rastrear três grupos de indicadores.
1.1. Performance e UI
- FPS (Frames Per Second) — taxa de quadros. Queda abaixo de 30 FPS sinaliza problemas com animação ou renderização.
- Tempo de inicialização — inicialização a frio e a quente. Medido do início do carregamento até o primeiro quadro.
- Consumo de memória — monitore vazamentos através do Instruments ou métricas integradas do Xcode.
import MetricKit
class PerformanceMonitor: NSObject, MXMetricManagerSubscriber { override init() { super.init() MXMetricManager.shared.add(self) } func didReceive(_ payloads: [MXMetricPayload]) { for payload in payloads { if let fpsData = payload.applicationLaunchMetrics { print("FPS médio: \\(fpsData.histogrammedApplicationResumeTime)") } } }}1.2. Requisições de rede e API
- Tempo de resposta do servidor (latência).
- Códigos de erro (4xx, 5xx).
- Número de requisições bem-sucedidas/malsucedidas.
import Foundation
class NetworkMonitor { static func trackRequest(_ url: URL, duration: TimeInterval, statusCode: Int) { let metrics: [String: Any] = [ "url": url.absoluteString, "duration_ms": duration * 1000, "status": statusCode ] // Envio para análise AnalyticsService.sendEvent("network_request", parameters: metrics) }}1.3. Crashes e erros
Use o Crashlytics (Firebase) ou um manipulador próprio. É importante registrar não apenas erros fatais, mas também erros recuperáveis.
import Crashlytics
class CrashHandler { static func logError(_ error: Error, context: String) { Crashlytics.crashlytics().record(error: error, userInfo: ["context": context]) }}2. Ferramentas para coleta de métricas
A escolha da ferramenta depende da escala do projeto. Vamos considerar três opções populares.
2.1. Firebase Crashlytics + Performance
Ferramenta gratuita do Google. Permite rastrear crashes, requisições de rede e métricas personalizadas. Integração via Swift Package Manager.
// Instale via SPM: firebase-ios-sdkimport FirebasePerformance
class PerformanceTracer { static func startTrace(name: String) -> Trace { let trace = Performance.startTrace(name: name) return trace } static func stopTrace(_ trace: Trace) { trace.stop() }}2.2. Sentry
Sistema avançado com suporte a rastreamento distribuído. Adequado para soluções enterprise.
import Sentry
SentrySDK.start { options in options.dsn = "https://examplePublicKey@o0.ingest.sentry.io/0" options.tracesSampleRate = 1.0 // 100% de rastreamento}
// Captura manual de erroSentrySDK.capture(error: NSError(domain: "com.example", code: 404))2.3. New Relic
Ferramenta poderosa para monitoramento de performance em tempo real. Suporta SwiftUI e UIKit.
// Integração via CocoaPods: pod 'NewRelicAgent'import NewRelic
NewRelic.start(w