مقدمة: لماذا تعتبر المراقبة أمرًا حيويًا لتطبيقات Swift
تعمل تطبيقات Swift الحديثة لنظامي iOS وmacOS في بيئة شديدة التنافسية. يتوقع المستخدمون استجابة فورية وأداءً مستقرًا وخلوًا من الأعطال. بدون نظام مراقبة، فإنك تخاطر بمعرفة انهيار الخادم أو خطأ حرج فقط بعد شكاوى العملاء. في هذه المقالة، سنشرح كيفية تنظيم مراقبة فعالة لتطبيقات Swift: ما هي المقاييس التي يجب جمعها، وكيفية إعداد التنبيهات وأتمتة العمليات.
1. المقاييس الرئيسية لتطبيقات Swift
تبدأ المراقبة باختيار المقاييس الصحيحة. بالنسبة لتطبيقات iOS وmacOS، من المهم تتبع ثلاث مجموعات من المؤشرات.
1.1. الأداء وواجهة المستخدم
- FPS (Frame Per Second) — معدل الإطارات. يشير الانخفاض إلى أقل من 30 FPS إلى مشاكل في الرسوم المتحركة أو العرض.
- وقت التشغيل — بدء التشغيل البارد والساخن. يُقاس من بداية التحميل حتى أول إطار.
- استهلاك الذاكرة — تتبع التسريبات باستخدام Instruments أو مقاييس 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: \\(fpsData.histogrammedApplicationResumeTime)") } } }}1.2. طلبات الشبكة وAPI
- وقت استجابة الخادم (latency).
- رموز الأخطاء (4xx, 5xx).
- عدد الطلبات الناجحة/الفاشلة.
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 ] // إرسال إلى التحليلات AnalyticsService.sendEvent("network_request", parameters: metrics) }}1.3. الأعطال والأخطاء
استخدم Crashlytics (Firebase) أو معالجًا مخصصًا. من المهم تسجيل ليس فقط الأخطاء الفادحة ولكن أيضًا الأخطاء القابلة للاسترداد.
import Crashlytics
class CrashHandler { static func logError(_ error: Error, context: String) { Crashlytics.crashlytics().record(error: error, userInfo: ["context": context]) }}2. أدوات جمع المقاييس
يعتمد اختيار الأداة على حجم المشروع. دعنا نستعرض ثلاثة خيارات شائعة.
2.1. Firebase Crashlytics + Performance
أداة مجانية من Google. تتيح تتبع الأعطال وطلبات الشبكة والمقاييس المخصصة. التكامل عبر Swift Package Manager.
// قم بالتثبيت عبر 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
نظام متقدم مع دعم التتبع الموزع. مناسب للحلول المؤسسية.
import Sentry
SentrySDK.start { options in options.dsn = "https://examplePublicKey@o0.ingest.sentry.io/0" options.tracesSampleRate = 1.0 // تتبع بنسبة 100%}
// التقاط خطأ يدويًاSentrySDK.capture(error: NSError(domain: "com.example", code: 404))2.3. New Relic
أداة قوية لمراقبة الأداء في الوقت الفعلي. تدعم SwiftUI وUIKit.
// التكامل عبر CocoaPods: pod 'NewRelicAgent'import NewRelic
NewRelic.start(w