شارك المقالة

شرح Firebase Performance في Flutter وربط Dio باستخدام firebase_performance_dio لمراقبة الأداء تلقائيًا

أداء التطبيق أصبح واحدًا من أهم العوامل المؤثرة في نجاح أي مشروع.

المستخدمون اليوم أكثر حساسية تجاه:

  • بطء تحميل الشاشات
  • تأخر استجابة الشبكة
  • زمن الإقلاع الطويل
  • الانتقال البطيء بين الصفحات

وفي كثير من الحالات قد يؤدي تأخر بسيط في التحميل إلى انخفاض معدل الاحتفاظ بالمستخدمين أو ظهور تقييمات سلبية داخل المتاجر.

هنا يأتي دور Firebase Performance Monitoring والذي يوفر نظامًا متكاملًا لمراقبة أداء التطبيقات داخل Flutter.

يسمح Firebase Performance بمراقبة:

  • زمن بدء التطبيق
  • سرعة الشبكة
  • العمليات الحرجة داخل التطبيق
  • طلبات HTTP
  • زمن تنفيذ أجزاء الكود

وفي هذا المقال سنتعرف على طريقة دمج Firebase Performance داخل Flutter وربط Dio باستخدام مكتبة firebase_performance_dio لالتقاط المقاييس تلقائيًا.

ما هي الحزم المستخدمة؟

سنستخدم حزمتين رئيسيتين:

firebase_performance

الإضافة الرسمية من Firebase الخاصة بمراقبة الأداء داخل Flutter.

توفر:

  • Performance Traces
  • HTTP Metrics
  • Startup Monitoring
  • Custom Measurements

firebase_performance_dio

تعتبر Middleware أو Interceptor خاص بمكتبة Dio.

تقوم بإرسال مقاييس الطلبات إلى Firebase تلقائيًا دون الحاجة لكتابة:


HttpMetric

وتلتقط:

  • زمن الطلب
  • حجم البيانات
  • حالة الاستجابة
  • Latency

وهي مناسبة جدًا للتطبيقات التي تعتمد على Dio بشكل أساسي.

المتطلبات قبل البدء

قبل إضافة Firebase Performance تأكد من وجود:

  • مشروع Flutter جاهز
  • ربط Firebase مع Android و iOS
  • إضافة firebase_options.dart
  • تهيئة Firebase داخل المشروع

كما سنحتاج الحزم التالية:

  • firebase_core
  • firebase_performance
  • dio
  • firebase_performance_dio

تثبيت الحزم

أضف أولًا:


firebase_performance: ^0.11.0+1

ثم:


firebase_performance_dio: ^0.7.1

بعد ذلك نفذ:


flutter pub get

تهيئة Firebase Performance داخل Flutter

بعد ربط Firebase نبدأ بتفعيل مراقبة الأداء.

بمجرد التفعيل سيبدأ Firebase تلقائيًا بتسجيل:

  • Startup Time
  • Network Requests
  • Basic Performance Metrics

مثال التهيئة:


import 'package:flutter/material.dart';

import 'package:firebase_core/firebase_core.dart';

import 'package:firebase_performance/firebase_performance.dart';

import 'firebase_options.dart';

Future<void> main() async {

 WidgetsFlutterBinding
     .ensureInitialized();

 await Firebase.initializeApp(

   options:
   DefaultFirebaseOptions
      .currentPlatform

 );

 await FirebasePerformance
     .instance
     .setPerformanceCollectionEnabled(
        true
     );

 runApp(
    const MyApp()
 );

}

بعد فترة قصيرة من الاستخدام ستبدأ المقاييس بالظهور داخل Firebase Console.

قياس زمن تنفيذ جزء معين من الكود

في بعض الأحيان نحتاج لمراقبة عملية محددة داخل التطبيق.

مثل:

  • تحميل ملفات كبيرة
  • تحويل البيانات
  • معالجة الصور
  • جلب بيانات معقدة

هنا يمكن استخدام:


Trace

مثال:


import
'package:firebase_performance/
firebase_performance.dart';

Future<void>
loadLargeData() async {

 final perf =
   FirebasePerformance.instance;

 final Trace trace =
   perf.newTrace(
      'load_large_data_trace'
   );

 await trace.start();

 await Future.delayed(
    const Duration(
       seconds: 2
    )
 );

 await trace.stop();

}

كل Trace يمثل عملية واحدة لها:

  • بداية
  • نهاية
  • زمن تنفيذ

ولإنشاء قياسات متعددة يفضل استخدام أسماء مختلفة لكل عملية.

ربط Dio مع firebase_performance_dio

إذا كان التطبيق يعتمد على Dio بشكل كبير فهنا تظهر قوة:


firebase_performance_dio

لأنها تقوم بالتقاط:

  • HTTP Status
  • Request Duration
  • Response Size
  • Network Latency

كل ذلك تلقائيًا دون كتابة كود إضافي.

مثال الربط:


import 'package:dio/dio.dart';

import
'package:firebase_performance_dio/
firebase_performance_dio.dart';

final dio = Dio();

final performanceInterceptor =

DioFirebasePerformanceInterceptor();

dio.interceptors.add(
   performanceInterceptor
);

final response = await dio.get(

'https://api.example.com/data'

);

بعد إضافة الـ Interceptor تبدأ المقاييس بالظهور مباشرة داخل Firebase Console.

مشاكل شائعة وحلول سريعة

لا تظهر البيانات داخل Firebase Console

إذا لم تظهر المقاييس تأكد من:

  • تفعيل: setPerformanceCollectionEnabled(true)
  • وجود مستخدمين حقيقيين
  • تشغيل التطبيق على جهاز فعلي

بعض المقاييس لا تظهر من المحاكيات.

أريد تتبع Endpoint معين داخل Dio

يمكن استخدام:


RequestOptions.extra

لإضافة Attributes مخصصة أثناء إنشاء المقاييس.

وهذا يسمح بتجميع الطلبات حسب:

  • Endpoint
  • Feature
  • Module

أفضل الممارسات

  • لا تنشئ Trace لكل عملية صغيرة.
  • ركز على العمليات الحرجة.
  • استخدم أسماء واضحة للـ Traces.
  • راقب الطلبات البطيئة فقط.
  • اجمع بين Performance و Crashlytics.
  • اختبر الأداء على أجهزة فعلية.

الخلاصة

يوفر Firebase Performance طريقة قوية لمراقبة أداء تطبيقات Flutter دون تعقيد كبير.

فهو يساعد على تتبع:

  • وقت الإقلاع
  • زمن الشبكة
  • الأجزاء الحرجة
  • طلبات HTTP

ومع إضافة firebase_performance_dio يصبح دمج Dio أسهل بكثير عبر التقاط المقاييس تلقائيًا دون الحاجة لكتابة منطق إضافي.

وفي التطبيقات الكبيرة يمكن أن تكون هذه البيانات عاملًا أساسيًا في تحسين الأداء وتجربة المستخدم وتقليل المشكلات قبل وصولها للمستخدم النهائي.



رابط المكتبة
firebase_performance_dio

لمزيد من المقالات : تعلم كيفية ضبط حجم الخط بشكل مثالي في Flutter
لمزيد من المقالات : لا تحدث Flutter مجددًا بدون قراءة هذا! كيف تدير 5 إصدارات SDK على جهاز واحد بسهولة؟
شاهد أيضًا
مقالات ذات صلة

🚫 مانع الإعلانات مفعل

يجب إيقاف مانع الإعلانات لاستكمال تصفح الموقع