مراقبة الأداء لعمليات طرح الميزات

1- نظرة عامة

في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية مراقبة أداء تطبيقك أثناء طرح ميزة. سيحتوي نموذج التطبيق على وظائف أساسية، وقد تم إعداده لعرض صورة خلفية مختلفة استنادًا إلى علامة "الإعداد عن بُعد في Firebase". سننتقل إلى تتبُّع قياس حالة التطبيق لمراقبة أداء التطبيق، وطرح تغيير في إعدادات التطبيق، ومراقبة التأثير والتعرّف على الطرق التي يمكننا من خلالها تحسين الأداء.

المعلومات التي ستطّلع عليها

  • كيفية إضافة ميزة "مراقبة أداء Firebase" إلى تطبيقك المتوافق مع الأجهزة الجوّالة للحصول على مقاييس جاهزة (مثل وقت بدء التطبيق واللقطات البطيئة أو الثابتة)
  • كيفية إضافة بيانات تتبُّع مخصّصة لفهم مسارات الرمز البرمجي المهمة لتجارب المستخدمين
  • كيفية استخدام لوحة بيانات "مراقبة الأداء" لفهم المقاييس وتتبُّع التغييرات المهمة، مثل طرح ميزة
  • كيفية إعداد تنبيهات الأداء لمراقبة المقاييس الرئيسية
  • كيفية طرح تغيير في ميزة "الإعداد عن بُعد في Firebase"

المتطلبات الأساسية

  • الإصدار 4.0 من "استوديو Android" أو إصدار أحدث
  • محاكي Android من المستوى 16 أو أعلى لواجهة برمجة التطبيقات
  • الإصدار 8 من Java أو إصدار أحدث
  • فهم أساسي لميزة الإعداد عن بُعد في Firebase

2- قم بإعداد نموذج المشروع

تنزيل الرمز

شغِّل الأمر التالي لاستنباط الرمز النموذجي لهذا الدرس التطبيقي حول الترميز. سيؤدي هذا الإجراء إلى إنشاء مجلد باسم codelab-perf-rc-android على جهازك:

$ git clone https://github.com/FirebaseExtended/codelab-feature-rollout-performance.git

في حال عدم توفّر Git على جهازك، يمكنك أيضًا تنزيل الرمز مباشرةً من GitHub.

استيراد المشروع ضمن مجلد firebase-perf-rc-android-start إلى "استوديو Android" من المحتمل أن تظهر لك بعض استثناءات بيئة التشغيل أو ربما تحذير بشأن عدم توفُّر ملف google-services.json. سنصحح هذا الأمر في القسم التالي.

في هذا الدرس التطبيقي، ستستخدم مساعد Firebase الإضافي لتسجيل تطبيق Android من خلال مشروع على Firebase وإضافة ملفات الإعداد والمكوّنات الإضافية والتبعيات اللازمة من Firebase إلى مشروع Android، وكل ذلك من داخل "استوديو Android".

ربط تطبيقك بمنصّة Firebase

  1. الانتقال إلى استوديو Android/مساعدة > تحقَّق من وجود تحديثات للتأكّد من أنك تستخدم أحدث إصدار من "استوديو Android" و"مساعد Firebase".
  2. اختَر الأدوات >. Firebase لفتح لوحة مساعد Google.

c0e42ef063d21eab.png

  1. اختَر مراقبة الأداء لإضافته إلى تطبيقك، ثمّ انقر على بدء استخدام "مراقبة الأداء".
  2. انقر على الربط بمنصة Firebase لربط مشروع Android بمنصّة Firebase (سيؤدي ذلك إلى فتح "وحدة تحكُّم Firebase" في المتصفّح).
  3. في "وحدة تحكُّم Firebase"، انقر على إضافة مشروع، ثم أدخِل اسم مشروع Firebase (إذا كان لديك مشروع في Firebase حاليًا، يمكنك اختيار ذلك المشروع الحالي بدلاً من ذلك). انقر على متابعة واقبل البنود لإنشاء مشروع Firebase وتطبيق Firebase جديد.

من المفترض أن يظهر بعد ذلك مربّع حوار من أجل ربط تطبيق Firebase الجديد بمشروعك على "استوديو Android".

51a549ebde2fe57a.png

  1. انقر على ربط.
  2. افتح "استوديو Android". في لوحة مساعد Google، ستظهر لك رسالة تأكيد بأنّ تطبيقك مرتبط بمنصّة Firebase.

40c24c4a56a45990.png

إضافة مراقبة الأداء إلى تطبيقك

في لوحة مساعد Google في "استوديو Android"، انقر على إضافة مراقبة الأداء إلى تطبيقك.

من المفترض أن يظهر لك مربّع حوار قبول التغييرات. بعد ذلك، من المفترض أن يُزامن "استوديو Android" تطبيقك لضمان إضافة جميع الاعتماديات اللازمة.

3046f3e1f5fea06f.png

أخيرًا، من المفترض أن تظهر لك رسالة نجاح في لوحة مساعد Google في "استوديو Android" تفيد بأنّه تم إعداد جميع الاعتماديات بشكل صحيح.

62e79fd18780e320.png

وكخطوة إضافية، يمكنك تفعيل تسجيل تصحيح الأخطاء باتّباع التعليمات الواردة في الخطوة "(اختياري) تفعيل تسجيل تصحيح الأخطاء". وتتوفّر التعليمات نفسها أيضًا في المستندات العلنية.

3- تشغيل التطبيق

من المفترض أن يظهر لك الآن ملف google-services.json في دليل الوحدات (على مستوى التطبيق) في تطبيقك، ومن المفترض أن يتم تجميعه الآن. في "استوديو Android"، انقر على تشغيل > شغِّل "التطبيق" لإنشاء التطبيق وتشغيله على محاكي Android.

عند تشغيل التطبيق، من المفترض أن تظهر لك أولاً شاشة بداية على النحو التالي:

ffbd413a6983b205.png

بعد ذلك، بعد بضع ثوانٍ، ستعرض الصفحة الرئيسية التي تحتوي على الصورة الافتراضية ما يلي:

d946cab0df319e50.png

ما الذي يجري خفية؟

يتم تنفيذ شاشة البداية في SplashscreenActivity، وهي تؤدي المهام التالية:

  1. في onCreate()، نبدأ بإعداد إعدادات "الإعداد عن بُعد في Firebase" ونجلب قيم الإعدادات التي ستضبطها في لوحة بيانات "الإعداد عن بُعد" لاحقًا في هذا الدرس التطبيقي حول الترميز.
  2. في executeTasksBasedOnRC()، نقرأ قيمة الإعدادات لعلامة seasonal_image_url. في حال توفير عنوان URL من خلال قيمة الإعداد، سننزِّل الصورة بشكلٍ متزامن.
  3. بعد اكتمال التنزيل، ينتقل التطبيق إلى MainActivity ويتّصل بـ "finish()" لإنهاء "SplashScreenActivity".

في MainActivity، إذا تم تحديد seasonal_image_url من خلال "الإعداد عن بُعد"، سيتم تفعيل الميزة وعرض الصورة التي تم تنزيلها كخلفية للصفحة الرئيسية. وبخلاف ذلك، سيتم عرض الصورة الافتراضية (الموضحة أعلاه).

4. إعداد ميزة "الإعداد عن بُعد"

يمكنك الآن إعداد علامة الميزة الجديدة بعد تشغيل تطبيقك.

  1. في اللوحة اليمنى من وحدة تحكُّم Firebase، ابحث عن قسم التفاعل، ثمّ انقر على الإعداد عن بُعد.
  2. انقر على الزر إنشاء إعداد لفتح نموذج الضبط وإضافة seasonal_image_url كمفتاح للمَعلمة.
  3. انقر على إضافة وصف، ثم أدخِل هذا الوصف: Shows a seasonal image (replaces default) in the main page when the restaurant list is empty.
  4. انقر على إضافة جديد -> القيمة الشرطية -> إنشاء شرط جديد.
  5. بالنسبة إلى اسم الشرط، أدخِل Seasonal image rollout.
  6. بالنسبة إلى القسم Applies if...، اختَر User in random percentile <= 0%. (عليك إيقاف الميزة إلى أن تكون جاهزًا لطرحها في خطوة لاحقة).
  7. انقر على إنشاء شرط. ستستخدم هذا الشرط لاحقًا لطرح الميزة الجديدة للمستخدمين.

7a07526eb9e81623.png

  1. افتح إنشاء نموذج المَعلمة الأول وابحث عن الحقل قيمة الطرح الموسمي للصور. أدخِل عنوان URL الذي سيتم تنزيل الصورة الموسمية منه: https://images.unsplash.com/photo-1552691021-7043334e0b51
  2. اترك القيمة التلقائية كسلسلة فارغة. وهذا يعني أنّه سيتم عرض الصورة التلقائية في قاعدة الرموز بدلاً من صورة تم تنزيلها من عنوان URL.
  3. انقر على حفظ.

99e6cd2ebcdced.png

يتضّح لك أنّه تم إنشاء الإعدادات الجديدة كمسودة.

  1. انقر على نشر التغييرات وأكِّد التغييرات في أعلى الصفحة لتحديث تطبيقك.

39cd3e96d370c7ce.png

5- إضافة ميزة مراقبة مدّة تحميل البيانات

يحمّل تطبيقك بعض البيانات مسبقًا قبل عرض "MainActivity"، كما يعرض شاشة بداية لإخفاء هذه العملية. وداعًا لانتظار المستخدمين لفترة طويلة على هذه الشاشة، لذا من المفيد عادةً مراقبة مدة عرض شاشة البداية.

وتتيح لك ميزة "مراقبة أداء Firebase" إجراء ذلك. يمكنك استخدام عمليات تتبُّع الرموز المخصّصة لمراقبة أداء رمز معيّن في تطبيقك، مثل مدّة تحميل البيانات ووقت معالجة الميزة الجديدة.

لتتبُّع مدة عرض شاشة البداية، عليك إضافة رمز تتبُّع مخصّص إلى SplashScreenActivity، وهو Activity الذي ينفِّذ شاشة البداية.

  1. عليك إعداد عملية تتبُّع رموز مخصّصة وإنشائها وبدء تنفيذها باسم splash_screen_trace:

SplashScreenActivity.java

// ...
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;
// ...

public class SplashScreenActivity extends AppCompatActivity {

    private static final String TAG = "SplashScreenActivity";
    private static final String SEASONAL_IMAGE_URL_RC_FLAG = "seasonal_image_url";

    // TODO: Initialize splash_screen_trace
    private final Trace splashScreenTrace = FirebasePerformance.startTrace("splash_screen_trace");
    
    // ...
}
  1. عليك إنهاء عملية التتبُّع باستخدام طريقة onDestroy() في SplashScreenActivity:

SplashScreenActivity.java

@Override
protected void onDestroy() {
    super.onDestroy();

    // TODO: Stop the splash_screen_trace here
    splashScreenTrace.stop();
}

بما أنّ الميزة الجديدة تعمل على تنزيل صورة ومعالجتها، سيكون عليك إضافة تتبُّع رمز مخصّص ثانٍ سيتتبّع الوقت الإضافي الذي تمت فيه إضافة الميزة إلى SplashScreenActivity.

  1. عليك إعداد عملية تتبُّع رموز مخصّصة وإنشائها وبدء تنفيذها باسم splash_seasonal_image_processing:

SplashScreenActivity.java

private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
    String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
    Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);

    if (!seasonalImageUrl.isEmpty()) {
        // TODO: Start the splash_seasonal_image_processing here
        final Trace seasonalImageProcessingTrace = FirebasePerformance
            .startTrace("splash_seasonal_image_processing");

        // ...
    }
}
  1. عليك إنهاء عملية التتبُّع في الطريقتَين onLoadFailed() وonResourceReady() لإجراء RequestListener:

SplashScreenActivity.java

Glide.with(SplashScreenActivity.this.getApplicationContext())
    .asBitmap()
    .load(seasonalImageUrl)
    .signature(new ObjectKey(Utils.getCacheUUID()))
    .listener(new RequestListener<Bitmap>() {
        @Override
        public boolean onLoadFailed(
            @Nullable GlideException e,
            Object model, Target<Bitmap> target,
            boolean isFirstResource) {

            // TODO: Stop the splash_seasonal_image_processing here
            seasonalImageProcessingTrace.stop();

            launchMainActivity();
            return true;
        }

        @Override
        public boolean onResourceReady(Bitmap resource, Object model,
            Target<Bitmap> target, DataSource dataSource,
            boolean isFirstResource) {

            // TODO: Stop the splash_seasonal_image_processing here
            seasonalImageProcessingTrace.stop();

            launchMainActivity();
            return true;
        }
     })
     .preload();

بعد أن أضفت عمليات تتبُّع الرموز المخصَّصة لتتبُّع مدة شاشة البداية (splash_screen_trace) ووقت معالجة الميزة الجديدة (splash_seasonal_image_processing)، يمكنك تشغيل التطبيق في "استوديو Android" مرة أخرى. من المفترض أن تظهر لك رسالة تسجيل تحتوي على Logging trace metric: splash_screen_trace، متبوعة بمدة التتبُّع. لن تظهر لك رسالة سجلّ لـ splash_seasonal_image_processing لأنك لم تفعِّل الميزة الجديدة بعد.

6- أضِف سمة مخصّصة إلى عملية التتبُّع.

بالنسبة إلى عمليات تتبُّع الرموز المخصّصة، تسجِّل "مراقبة الأداء" تلقائيًا السمات التلقائية (البيانات الوصفية الشائعة، مثل إصدار التطبيق والبلد والجهاز وما إلى ذلك) حتى تتمكّن من فلترة بيانات التتبُّع في وحدة تحكُّم Firebase. يمكنك أيضًا إضافة السمات المخصّصة ومراقبتها.

لقد أضفتَ للتو عمليتَي تتبُّع مخصّصَين في تطبيقك لمراقبة مدة شاشة البداية ووقت معالجة الميزة الجديدة. من العوامل التي قد تؤثر في هذه المدد ما إذا كانت الصورة المعروضة هي الصورة التلقائية أو ما إذا كان يجب تنزيل الصورة من عنوان URL. وقد تكون لديك في نهاية المطاف عناوين URL مختلفة يمكنك تنزيل الصورة منها.

لذا، دعونا نضيف سمة مخصصة تمثل عنوان URL الموسمي للصورة إلى عمليات تتبع الرموز المخصصة هذه. بهذه الطريقة، يمكنك فلترة بيانات المدة حسب هذه القيم لاحقًا.

  1. أضِف السمة المخصّصة (seasonal_image_url_attribute) لـ splash_screen_trace في بداية طريقة executeTasksBasedOnRC:

SplashScreenActivity.java

private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
    String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
    Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);

    // TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_screen_trace
    if (seasonalImageUrl.isEmpty()) {
        splashScreenTrace.putAttribute("seasonal_image_url_attribute", "unset");
    } else {
        splashScreenTrace.putAttribute("seasonal_image_url_attribute", seasonalImageUrl);
    }

    // ...
}
  1. أضف السمة المخصصة نفسها لـ splash_seasonal_image_processing بعد استدعاء startTrace("splash_seasonal_image_processing") مباشرةً:

SplashScreenActivity.java

if (!seasonalImageUrl.isEmpty()) {
    // TODO: Start the splash_seasonal_image_processing here
    final Trace seasonalImageProcessingTrace = FirebasePerformance
        .startTrace("splash_seasonal_image_processing");

    // TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_seasonal_image_processing
    seasonalImageProcessingTrace
        .putAttribute("seasonal_image_url_attribute", seasonalImageUrl);

    // ...
}

الآن بعد أن أضفت سمة مخصّصة (seasonal_image_url_attribute) لكل من عمليات التتبُّع المخصَّصة (splash_screen_trace وsplash_seasonal_image_processing)، يمكنك تشغيل التطبيق في "استوديو Android" مرة أخرى. من المفترَض أن تظهر رسالة تسجيل تتضمّن Setting attribute 'seasonal_image_url_attribute' to 'unset' on trace 'splash_screen_trace'.. لم يتم بعد تفعيل مَعلمة "الإعداد عن بُعد" WEEKalImageUrl، ولهذا السبب هي قيمة السمة unset.

ستجمع حزمة SDK لمراقبة الأداء بيانات التتبُّع وترسلها إلى Firebase. يمكنك عرض البيانات في لوحة بيانات الأداء بوحدة تحكُّم Firebase، والتي سنشرحها بالتفصيل في الخطوة التالية من الدرس التطبيقي حول الترميز.

7- تهيئة لوحة التحكم في مراقبة الأداء

ضبط لوحة البيانات لمراقبة الميزة

في وحدة تحكُّم Firebase، اختَر المشروع الذي يحتوي على تطبيق Friendly Eats.

في اللوحة اليمنى، ابحث عن زر الإصدار المراقبة، ثمّ انقر على الأداء.

من المفترض أن تظهر لك لوحة بيانات الأداء التي تحتوي على نقاط البيانات الأولى في لوحة المقاييس. تجمع حزمة SDK لمراقبة الأداء بيانات الأداء من تطبيقك وتعرضها في غضون دقائق من جمعها.

f57e5450b70034c9.png

ويمكنك استخدام لوحة المقاييس هذه لتتبُّع المقاييس الرئيسية لتطبيقك. وتتضمّن طريقة العرض التلقائية مدة تتبُّع وقت بدء التطبيق، ولكن يمكنك إضافة المقاييس الأكثر أهمية بالنسبة إليك. بما أنّك تتتبّع الميزة الجديدة التي أضفتها، يمكنك تخصيص لوحة البيانات لتعرض مدة تتبُّع الرموز المخصّصة splash_screen_trace.

  1. انقر على أحد مربّعات اختيار مقياس الفارغة.
  2. في نافذة مربّع الحوار، اختَر نوع تتبُّع عمليات التتبُّع المخصَّصة واسم التتبُّع splash_screen_trace.

1fb81f4dba3220e0.png

  1. انقر على اختيار مقياس، ومن المفترض أن تظهر لك مدة splash_screen_trace التي تمّت إضافتها إلى لوحة بياناتك.

يمكنك استخدام هذه الخطوات نفسها لإضافة مقاييس أخرى تهمّك حتى تتمكّن من الاطّلاع سريعًا على مدى تغيّر أدائها بمرور الوقت وحتى مع الإصدارات المختلفة.

1d465c021e58da3b.png

تُعد لوحة المقاييس أداة فعّالة لتتبُّع أداء المقاييس الرئيسية التي يستخدِمها المستخدمون. بالنسبة لهذا الدرس التطبيقي حول الترميز، لديك مجموعة صغيرة من البيانات في نطاق زمني ضيق، لذا ستستخدم طرق عرض أخرى للوحة البيانات من شأنها أن تساعدك على فهم أداء طرح الميزة.

8- طرح الميزة

الآن بعد الانتهاء من إعداد ميزة المراقبة، أصبحت جاهزًا لطرح التغيير الذي أجريناه على ميزة "الإعداد عن بُعد في Firebase" (وهو seasonal_image_url) الذي سبق لك إعداده.

لطرح تغيير، عليك الرجوع إلى صفحة "الإعداد عن بُعد" في وحدة تحكُّم Firebase لزيادة النسبة المئوية للمستخدمِين لشرط الاستهداف. عادةً، ستطرح ميزات جديدة لجزء صغير من المستخدمين وتزيدها فقط عندما تكون واثقًا من عدم وجود مشكلات بها. ومع ذلك، في هذا الدرس التطبيقي حول الترميز، أنت المستخدم الوحيد للتطبيق، لذا يمكنك تغيير النسبة المئوية إلى %100.

  1. انقر على علامة التبويب الشروط في أعلى الصفحة.
  2. انقر على الشرط Seasonal image rollout الذي أضفته سابقًا.
  3. تغيير النسبة المئوية إلى 100%.
  4. انقر على حفظ الشرط.
  5. انقر على نشر التغييرات وأكِّد التغييرات.

70f993502b27e7a0.png

وبعد العودة إلى "استوديو Android"، أعِد تشغيل التطبيق في المحاكي للاطّلاع على الميزة الجديدة. بعد شاشة البداية، من المفترض أن تظهر الشاشة الرئيسية الجديدة للحالة الفارغة.

b0cc91b6e48fb842.png

9- التحقق من تغييرات الأداء

لنتحقّق الآن من أداء تحميل شاشة البداية باستخدام لوحة بيانات الأداء في وحدة تحكُّم Firebase. في هذه الخطوة من الدرس التطبيقي حول الترميز، ستستخدم أجزاءً مختلفة من لوحة البيانات لعرض بيانات الأداء.

  1. في علامة التبويب لوحة البيانات الرئيسية، انتقِل إلى أسفل الصفحة إلى جدول بيانات التتبُّع، ثم انقر على علامة التبويب عمليات التتبُّع المخصّصة. في هذا الجدول، ستظهر لك عمليات تتبُّع الرموز المخصّصة التي أضفتها سابقًا بالإضافة إلى بعض عمليات تتبُّع الرموز غير الجاهزة.
  2. بعد تفعيل الميزة الجديدة، ابحث عن رمز تتبُّع الرمز المخصّص splash_seasonal_image_processing الذي يقيس الوقت المستغرق لتنزيل الصورة ومعالجتها. من قيمة مدة التتبُّع، يمكنك ملاحظة أنّ عملية التنزيل والمعالجة هذه تستغرق وقتًا طويلاً.

439adc3ec71805b7.png

  1. بما أنّ لديك بيانات عن splash_seasonal_image_processing، يمكنك إضافة مدة سجلّ التتبُّع هذا إلى لوحة المقاييس في أعلى علامة التبويب لوحة البيانات.

كما في السابق، انقر على أحد مربّعات اختيار مقياس الفارغة. في نافذة مربّع الحوار، اختَر نوع التتبُّع عمليات التتبُّع المخصَّصة واسم التتبُّع splash_seasonal_image_processing. أخيرًا، انقر على اختيار مقياس لإضافة هذا المقياس إلى لوحة المقاييس.

7fb64d2340410576.png

  1. للتأكّد من الاختلافات، يمكنك إلقاء نظرة عن كثب على بيانات "splash_screen_trace". انقر على بطاقة "splash_screen_trace" في لوحة المقاييس، ثم انقر على عرض تفاصيل المقياس.

b1c275c30679062a.png

  1. في صفحة التفاصيل، ستظهر لك قائمة بالسمات في أسفل يمين الشاشة، بما في ذلك السمة المخصّصة التي أنشأتها سابقًا. انقر على السمة المخصّصة seasonal_image_url_attribute لعرض مدة شاشة البداية لكل عنوان URL لصورة موسمية على اليسار:

8fa1a69019bb045e.png

  1. من المحتمل أن تكون قيم مدة شاشة البداية مختلفة قليلاً عن تلك الواردة في لقطة الشاشة أعلاه، ولكن يجب أن تكون المدة أطول عند تنزيل الصورة من عنوان URL مقارنةً باستخدام الصورة التلقائية (الممثّلة بالقيمة "غير محدَّد").

في هذا الدرس التطبيقي حول الترميز، قد يكون سبب هذه المدة الأطول واضحًا، ولكن في تطبيق حقيقي، قد لا يكون الأمر واضحًا جدًا. تأتي بيانات المدة التي يتم جمعها من أجهزة مختلفة، وتشغيل التطبيق في ظروف اتصال مختلفة بالشبكة، وقد تكون هذه الحالات أسوأ مما كنت تتوقع. فلنلقِ نظرة على كيفية التحقيق في هذه المشكلة إذا كان هذا الوضع واقعيًا.

  1. انقر على الأداء في أعلى الصفحة للعودة إلى علامة التبويب الرئيسية لوحة البيانات: 640b696b79d90103.png
  2. في جدول بيانات التتبُّع في أسفل الصفحة، انقر على علامة التبويب طلبات الشبكة. في هذا الجدول، ستظهر جميع طلبات الشبكة من تطبيقك مجمّعة في أنماط عناوين URL، بما في ذلك نمط عنوان URL images.unsplash.com/**. عند مقارنة قيمة وقت الاستجابة هذا بإجمالي الوقت الذي يستغرقه تنزيل الصور ومعالجتها (أي مدة تتبُّع splash_seasonal_image_processing)، يمكنك ملاحظة أنّه يتم قضاء الكثير من الوقت في تنزيل الصورة.

6f92ce0f23494507.png

نتائج الأداء

باستخدام ميزة "مراقبة أداء Firebase"، لاحظت التأثير التالي على المستخدمين النهائيين الذين فعّلوا الميزة الجديدة:

  1. زاد الوقت المستغرَق في SplashScreenActivity.
  2. كانت مدة splash_seasonal_image_processing كبيرة جدًا.
  3. ويرجع هذا التأخير إلى الوقت الذي استغرقته الاستجابة لتنزيل الصورة ووقت المعالجة المطلوب لها.

في الخطوة التالية، سيتم التخفيف من تأثيرها في الأداء من خلال الرجوع إلى الإصدار السابق من الميزة وتحديد كيفية تحسين تنفيذ الميزة.

10- إعادة الميزة إلى الحالة السابقة

زيادة مستوى وصول المستخدمين وقت الانتظار أثناء شاشة البداية غير مرغوب فيه. تتمثل إحدى المزايا الرئيسية لميزة "الإعداد عن بُعد" في إمكانية إيقاف عملية الطرح مؤقتًا وعكسها بدون الحاجة إلى طرح إصدار آخر للمستخدمين. يتيح لك ذلك التفاعل بسرعة مع المشاكل (مثل مشاكل الأداء التي اكتشفتها في الخطوة الأخيرة) وتقليل عدد المستخدمين غير الراضين.

في سبيل تخفيف الأثر بسرعة، عليك إعادة ضبط النسبة المئوية للطرح على 0 ليتمكّن جميع المستخدمين من رؤية الصورة التلقائية مرة أخرى:

  1. ارجِع إلى صفحة الإعداد عن بُعد في وحدة تحكُّم Firebase.
  2. انقر على الشروط في أعلى الصفحة.
  3. انقر على الشرط Seasonal image rollout الذي أضفته سابقًا.
  4. غيِّر النسبة المئوية إلى %0.
  5. انقر على حفظ الشرط.
  6. انقر على نشر التغييرات وأكِّد التغييرات.

18c4f1cbac955a04.png

أعِد تشغيل التطبيق في "استوديو Android" وستظهر لك الشاشة الرئيسية الأصلية للحالة الفارغة:

d946cab0df319e50.png

11- إصلاح مشاكل الأداء

لقد اكتشفت في وقت سابق من خلال الدرس التطبيقي حول الترميز أنّ تنزيل صورة لشاشة البداية كان يتسبب في بطء تطبيقك. بعد إلقاء نظرة عن كثب على الصورة التي تم تنزيلها، تلاحظ أنّك تستخدم درجة الدقة الأصلية للصورة التي تجاوزت 2 ميغابايت. يمكنك حلّ مشكلة الأداء بسرعة من خلال تقليل الجودة إلى درجة دقة أكثر ملاءمة كي تستغرق عملية تنزيل الصورة وقتًا أقل.

طرح قيمة "الإعداد عن بُعد" مرة أخرى

  1. ارجِع إلى صفحة الإعداد عن بُعد في وحدة تحكُّم Firebase.
  2. انقر على رمز تعديل للمَعلمة seasonal_image_url.
  3. عدِّل قيمة طرح الصور الموسمية إلى https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640، ثمّ انقر على حفظ.

828dd1951a2ec4a4.png

  1. انقر على علامة التبويب الشروط في أعلى الصفحة.
  2. انقر على طرح الصور الموسمية، ثمّ اضبط النسبة المئوية على %100 مرة أخرى.
  3. انقر على حفظ الشرط.

1974fa3bb789f36c.png

  1. انقر على زر نشر التغييرات.

12- اختبار الإصلاح وإعداد التنبيهات

تشغيل التطبيق على الجهاز

بعد ضبط قيمة الضبط الجديدة على استخدام عنوان URL مختلف لصورة التنزيل، يمكنك تشغيل التطبيق مرة أخرى. هذه المرة، من المفترض أن تلاحظ أن الوقت المستغرَق على شاشة البداية أقصر من السابق.

b0cc91b6e48fb842.png

عرض أداء التغييرات

ارجع إلى لوحة بيانات الأداء في وحدة تحكُّم Firebase للاطّلاع على الشكل الذي تبدو عليه المقاييس.

  1. هذه المرة، ستستخدم جدول بيانات التتبّع للانتقال إلى صفحة التفاصيل. في أسفل جدول بيانات التتبُّع، وضمن علامة التبويب تتبُّعات التطبيقات المخصّصة، انقر على رمز التتبُّع المخصّص splash_seasonal_image_processing للاطّلاع على عرض أكثر تفصيلاً لمقياس المدة مرة أخرى.

2d7aaca03112c062.png

  1. انقر على السمة المخصّصة seasonal_image_url_attribute للاطّلاع على تفاصيل السمات المخصّصة مرة أخرى. في حال تمرير مؤشّر الماوس فوق عناوين URL، ستظهر لك قيمة تتطابق مع عنوان URL الجديد للصورة ذات الحجم الصغير: https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640 (مع ?w=640 في نهايته). إنّ قيمة المدة المرتبطة بهذه الصورة أقصر بكثير من قيمة الصورة السابقة، وهي مقبولة أكثر للمستخدمين.

10e30c037a4237a2.png

  1. الآن وبعد تحسين أداء شاشة البداية، يمكنك إعداد تنبيهات لإعلامك عندما يتجاوز كل تتبُّع الحدّ الذي حدّدته. افتح لوحة بيانات الأداء وانقر على رمز القائمة الكاملة (النقاط الثلاث) لـ التي تشير إلى شاشة البداية وانقر على إعدادات التنبيه.

4bd0a2a1faa14479.png

  1. انقر على مفتاح التبديل لتفعيل تنبيه المدة. يجب ضبط قيمة الحدّ لتكون أعلى قليلاً من القيمة التي كانت تظهر لك، ومن المفترض أن تصلك رسالة إلكترونية إذا تجاوز مقياس push_screen_trace هذا الحدّ.
  1. انقر على حفظ لإنشاء التنبيه. مرِّر لأسفل إلى جدول بيانات التتبُّع، ثم انقر على علامة التبويب تتبُّعات التتبُّع المخصّصة للتأكُّد من تفعيل التنبيه.

2bb93639e2218d1.png

13- تهانينا

تهانينا لقد فعّلت حزمة تطوير البرامج (SDK) الخاصة بمراقبة أداء Firebase وجمعت بيانات التتبّع لقياس أداء ميزة جديدة. لقد راقبت مقاييس الأداء الرئيسية لطرح ميزة جديدة وتفاعلت بسرعة عند اكتشاف مشكلة في الأداء. كل ذلك ممكنًا من خلال إمكانية إجراء تغييرات على الإعدادات باستخدام ميزة "الإعداد عن بُعد" ورصد مشاكل الأداء في الوقت الفعلي.

المواضيع التي تناولناها

  • إضافة حزمة SDK لمراقبة أداء Firebase إلى تطبيقك
  • إضافة رمز تتبُّع مخصّص إلى الرمز الخاص بك لقياس ميزة معيّنة
  • إعداد مَعلمة "الإعداد عن بُعد" وقيمة شرطية للتحكّم في ميزة جديدة أو طرحها
  • فهم كيفية استخدام لوحة معلومات مراقبة الأداء لتحديد المشكلات أثناء الطرح
  • إعداد تنبيهات الأداء لإعلامك عندما يتخطى أداء تطبيقك الحدّ الذي حدّدته

مزيد من المعلومات