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

1. نظرة عامة

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

ما ستتعلمه

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

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

  • أندرويد ستوديو 4.0 أو أعلى
  • محاكي Android بمستوى API 16 أو أعلى.
  • جافا الإصدار 8 أو أعلى
  • فهم أساسي لتكوين Firebase Remote Config

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

قم بتنزيل الكود

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

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

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

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

في هذا الدرس التطبيقي حول التعليمات البرمجية، ستستخدم المكوّن الإضافي Firebase Assistant لتسجيل تطبيق Android الخاص بك مع مشروع Firebase وإضافة ملفات تكوين Firebase والمكونات الإضافية والتبعيات الضرورية إلى مشروع Android الخاص بك - كل ذلك من داخل Android Studio !

قم بتوصيل تطبيقك بـ Firebase

  1. انتقل إلى Android Studio / Help > التحقق من وجود تحديثات للتأكد من أنك تستخدم أحدث إصدارات Android Studio وFirebase Assistant.
  2. حدد أدوات > Firebase لفتح جزء المساعد .

c0e42ef063d21eab.png

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

من المفترض أن ترى بعد ذلك مربع حوار لتوصيل تطبيق Firebase الجديد بمشروع Android Studio الخاص بك.

51a549ebde2fe57a.png

  1. انقر فوق اتصال .
  2. افتح ستوديو أندرويد. في جزء المساعد ، سترى تأكيدًا بأن تطبيقك متصل بـ Firebase.

40c24c4a56a45990.png

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

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

من المفترض أن تشاهد مربع حوار لقبول التغييرات وبعد ذلك يجب على Android Studio مزامنة تطبيقك للتأكد من إضافة جميع التبعيات الضرورية.

3046f3e1f5fea06f.png

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

62e79fd18780e320.png

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

3. قم بتشغيل التطبيق

يجب أن تشاهد الآن ملف google-services.json في دليل الوحدة النمطية (على مستوى التطبيق) لتطبيقك، ويجب الآن تجميع تطبيقك. في Android Studio، انقر فوق Run > Run 'app' لإنشاء التطبيق وتشغيله على محاكي Android لديك.

عند تشغيل التطبيق، يجب أن تشاهد أولاً شاشة البداية مثل هذه:

ffbd413a6983b205.png

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

d946cab0df319e50.png

ماذا يحدث تحت الغطاء؟

يتم تنفيذ شاشة البداية في SplashScreenActivity وتقوم بما يلي:

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

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

4. قم بإعداد التكوين عن بعد

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

  1. في اللوحة اليمنى لوحدة تحكم Firebase ، حدد موقع قسم المشاركة ، ثم انقر على Remote Config .
  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 Studio مرة أخرى. من المفترض أن تشاهد رسالة تسجيل تحتوي على 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 Studio مرة أخرى. من المفترض أن تشاهد رسالة تسجيل تحتوي على Setting attribute 'seasonal_image_url_attribute' to 'unset' on trace 'splash_screen_trace'. لم تقم بعد بتمكين معلمة التكوين عن بعد seasonImageUrl وهذا هو سبب 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 Remote Config ( seasonal_image_url) الذي قمت بإعداده مسبقًا.

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

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

70f993502b27e7a0.png

بالعودة إلى Android Studio، أعد تشغيل التطبيق في المحاكي الخاص بك لرؤية الميزة الجديدة. بعد شاشة البداية، يجب أن تشاهد الشاشة الرئيسية الجديدة للحالة الفارغة!

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 مقابل استخدام الصورة الافتراضية (الممثلة بـ "unset").

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

  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. استرجاع الميزة

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

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

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

18c4f1cbac955a04.png

أعد تشغيل التطبيق في Android Studio، ومن المفترض أن تشاهد الشاشة الرئيسية الأصلية للحالة الفارغة:

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. الآن بعد أن قمت بتحسين أداء شاشة البداية، يمكنك إعداد تنبيهات لإعلامك عندما يتجاوز التتبع الحد الذي قمت بتعيينه. افتح لوحة معلومات الأداء وانقر على أيقونة القائمة الكاملة (ثلاث نقاط) لـ splash_screen_trace وانقر على إعدادات التنبيه .

4bd0a2a1faa14479.png

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

2bb93639e2218d1.png

13. تهانينا!

تهانينا! لقد قمت بتمكين Firebase Performance Monitoring SDK وجمعت آثارًا لقياس أداء ميزة جديدة! لقد قمت بمراقبة مقاييس الأداء الرئيسية لبدء تشغيل ميزة جديدة وتفاعلت بسرعة عند اكتشاف مشكلة في الأداء. كان كل هذا ممكنًا بفضل القدرة على إجراء تغييرات التكوين باستخدام Remote Config ومراقبة مشكلات الأداء في الوقت الفعلي.

ما قمنا بتغطيته

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

يتعلم أكثر