Überwachung von Swift-Apps: Metriken und Alarme für iOS/macOS

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum Monitoring für Swift-Apps kritisch ist

Moderne Swift-Anwendungen für iOS und macOS agieren in einem hochkompetitiven Umfeld. Nutzer erwarten sofortige Reaktionsfähigkeit, stabilen Betrieb und keine Ausfälle. Ohne ein Monitoringsystem riskieren Sie, von einem Serverausfall oder kritischen Fehler erst durch Kundenbeschwerden zu erfahren. In diesem Artikel analysieren wir, wie Sie effektives Monitoring für Swift-Apps organisieren: welche Metriken zu erfassen sind, wie Alarme eingerichtet und Prozesse automatisiert werden.



1. Schlüsselmetriken für Swift-Apps

Monitoring beginnt mit der Auswahl der richtigen Metriken. Für iOS- und macOS-Apps sind drei Gruppen von Kennzahlen wichtig.



1.1. Leistung und UI

  • FPS (Frames Per Second) — Bildwiederholrate. Ein Abfall unter 30 FPS signalisiert Probleme mit Animationen oder Rendering.
  • Startzeit — Kalt- und Warmstart. Gemessen vom Start der Ladephase bis zum ersten Frame.
  • Speichernutzung — Überwachen Sie Lecks via Instruments oder integrierte Xcode-Metriken.


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("Durchschnittliche FPS: \\(fpsData.histogrammedApplicationResumeTime)") } } }}


1.2. Netzwerkanfragen und API

  • Server-Antwortzeit (Latenz).
  • Fehlercodes (4xx, 5xx).
  • Anzahl erfolgreicher/fehlgeschlagener Anfragen.


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 ] // Senden an die Analytik AnalyticsService.sendEvent("network_request", parameters: metrics) }}


1.3. Crashes und Fehler

Verwenden Sie Crashlytics (Firebase) oder einen eigenen Handler. Wichtig ist, nicht nur fatale Fehler, sondern auch behebbare Fehler (recoverable errors) zu erfassen.



import Crashlytics

class CrashHandler { static func logError(_ error: Error, context: String) { Crashlytics.crashlytics().record(error: error, userInfo: ["context": context]) }}


2. Werkzeuge zur Metrikenerfassung

Die Wahl des Werkzeugs hängt vom Projektumfang ab. Betrachten wir drei gängige Optionen.



2.1. Firebase Crashlytics + Performance

Kostenloses Tool von Google. Ermöglicht die Verfolgung von Crashes, Netzwerkanfragen und benutzerdefinierten Metriken. Integration via Swift Package Manager.



// Installieren 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

Fortschrittliches System mit Unterstützung für verteiltes Tracing. Geeignet für Enterprise-Lösungen.



import Sentry

SentrySDK.start { options in options.dsn = "https://examplePublicKey@o0.ingest.sentry.io/0" options.tracesSampleRate = 1.0 // 100% Tracing}

// Manuelles Erfassen eines FehlersSentrySDK.capture(error: NSError(domain: "com.example", code: 404))


2.3. New Relic

Leistungsstarkes Tool für Echtzeit-Leistungsüberwachung. Unterstützt SwiftUI und UIKit.



// Integration via CocoaPods: pod 'NewRelicAgent'import NewRelic

NewRelic.start(w

Blogs

Buchempfehlungen