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

1. نظرة عامة

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

ماذا ستتعلم

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

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

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

2. قم بإعداد مشروع العينة

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

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

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

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

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

في هذا codelab، سوف نستخدم مساعد Firebase المساعد لتسجيل لدينا التطبيق الروبوت مع مشروع Firebase وإضافة ما يلزم من Firebase ملفات التكوين، والإضافات، والتبعيات لمشروع الروبوت لدينا - كل من داخل الروبوت ستوديو!

اربط تطبيقك بـ Firebase

  1. الذهاب إلى الروبوت استوديو / تعليمات> التحقق من وجود تحديثات للتأكد من أنك تستخدم أحدث إصدارات أندرويد ستوديو ومساعد Firebase.
  2. اختر Tools> Firebase لفتح جزء مساعد.

2fe37593d5b76c7.png

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

38e2c00493a8d4d4.png

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

dda8bdd9488167a0.png

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

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

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

9b58145acc4be030.png

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

378356b65be49df8.png

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

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

يجب أن تشاهد الآن google-services.json الملف في الدليل وحدة (على مستوى التطبيق) من التطبيق الخاص بك، ويجب أن التطبيق الخاص بك الآن تجميع. في الروبوت ستوديو، انقر فوق تشغيل> تشغيل "التطبيق" لبناء وتشغيل التطبيق على محاكي الروبوت الخاص بك.

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

843a786fe3f42d0f.png

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

e4b8dac61e405c61.png

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

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

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

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

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

الآن وبعد تشغيل تطبيقنا ، يمكننا إعداد علامة الميزة الجديدة. في اللوحة اليسرى من وحدة التحكم Firebase ، موقع المقطع الانخراط، ثم انقر فوق البعيد التكوين.

في إضافة بطاقة المعلمة:

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

11547904ae42262d.png

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

38aa4cbe87bc58d3.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تشغيل التطبيق في الروبوت ستوديو مرة أخرى. يجب أن تشاهد رسالة التسجيل الذي يحتوي على 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تشغيل التطبيق في الروبوت ستوديو مرة أخرى. يجب أن تشاهد رسالة التسجيل الذي يحتوي على Setting attribute 'seasonal_image_url_attribute' to 'unset' on trace 'splash_screen_trace'. نحن لم تمكين بعد التكوين عن بعد المعلمة seasonalImageUrl وهذا هو السبب قيمة السمة unset .

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

7. تكوين لوحة معلومات مراقبة الأداء

تكوين لوحة القيادة الخاصة بك لمراقبة ميزتك

في وحدة التحكم Firebase ، حدد المشروع الذي يوجد لديك التطبيق ودية يأكل.

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

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

16d8b0db35956361.png

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

  1. انقر على أحد فارغة تحديد مربعات متري.
  2. في إطار الحوار، حدد نوع أثر للآثار مخصص واسم أثر splash_screen_trace .

f3735b336c8c4b8.png

  1. انقر فوق تحديد متري، ويجب أن تشاهد مدة splash_screen_trace إضافة إلى لوحة القيادة الخاصة بك!

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

e7ac31d452e95dba.png

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

8. طرح الميزة الخاصة بك

الآن بعد أن قمنا بإعداد الرصد لدينا، ونحن على استعداد لطرح التغيير Firebase بعد التكوين ( seasonal_image_url) التي وضعناها في وقت سابق.

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

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

83b527dd7918d288.png

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

c4ad503bda164ab6.png

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

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

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

ccb4e5762dfc4abb.png

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

على غرار قبل، انقر على واحد من تحديد فارغة مربعات متري. في إطار الحوار، حدد آثار مخصص نوع التتبع واسم أثر splash_seasonal_image_processing . وأخيرا، انقر فوق تحديد مقياس لإضافة هذا المقياس إلى لوحة المقاييس.

c0768ce8f147336a.png

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

637c29b428a4b98c.png

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

f809ac2f7fc095fb.png

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

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

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

d629934fc7ad4903.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. انقر على نشر التغييرات وتأكيد التغييرات.

9ed5808f15d2432.png

أعد تشغيل التطبيق في Android Studio ، وسترى الشاشة الرئيسية الأصلية الفارغة:

e4b8dac61e405c61.png

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

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

طرح قيمة Remote Config مرة أخرى

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

79ff14f179636316.png

  1. انقر فوق علامة التبويب الشروط في الجزء العلوي من الصفحة.
  2. انقر على الصورة الموسمية التمهيدية، ثم تعيين الظهر المئوية إلى 100٪.
  3. انقر فوق حفظ الشرط.

4578d491f02708a5.png

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

12. اختبر التطبيق مع المراقبة

قم بتشغيل التطبيق محليًا

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

c4ad503bda164ab6.png

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

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

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

71f13ad560bbddba.png

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

e522b4f0f315ce3f.png

13. مبروك!

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

ماذا غطينا؟

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

يتعلم أكثر