सुविधा के रोल आउट की परफ़ॉर्मेंस पर नज़र रखना

1. खास जानकारी

इस कोडलैब में, आपको सुविधा के लॉन्च के दौरान अपने ऐप्लिकेशन की परफ़ॉर्मेंस पर नज़र रखने का तरीका बताया जाएगा. हमारे सैंपल ऐप्लिकेशन में बुनियादी फ़ंक्शन होंगे. साथ ही, इसे Firebase रिमोट कॉन्फ़िगरेशन फ़्लैग के आधार पर एक अलग बैकग्राउंड इमेज दिखाने के लिए सेट अप किया गया है. हम ऐप्लिकेशन की परफ़ॉर्मेंस पर नज़र रखने के लिए, इंस्ट्रुमेंटिंग ट्रेस देखेंगे. साथ ही, ऐप्लिकेशन के कॉन्फ़िगरेशन में बदलाव रोल आउट करेंगे, उसके असर को मॉनिटर करेंगे, और यह देखेंगे कि हम परफ़ॉर्मेंस को कैसे बेहतर बना सकते हैं.

आपको यह जानकारी मिलेगी

  • अनूठे मेट्रिक (जैसे कि ऐप्लिकेशन शुरू होने का समय, धीमे या रुके हुए फ़्रेम) पाने के लिए अपने मोबाइल ऐप्लिकेशन में Firebase प्रदर्शन मॉनिटर करने की सुविधा कैसे जोड़ें
  • उपयोगकर्ता के सफ़र के ज़रूरी कोड पाथ को समझने के लिए, कस्टम ट्रेस जोड़ने का तरीका
  • अपनी मेट्रिक को समझने और किसी सुविधा के रोल आउट जैसे ज़रूरी बदलावों को ट्रैक करने के लिए, परफ़ॉर्मेंस मॉनिटर करने वाले डैशबोर्ड का इस्तेमाल कैसे करें
  • मुख्य मेट्रिक पर नज़र रखने के लिए, परफ़ॉर्मेंस अलर्ट सेटअप करने का तरीका
  • Firebase रिमोट कॉन्फ़िगरेशन में बदलाव को रोल आउट करने का तरीका

ज़रूरी शर्तें

  • Android Studio 4.0 या इसके बाद वाला वर्शन
  • एपीआई लेवल 16 या उसके बाद के लेवल वाला Android एम्युलेटर.
  • 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 फ़ोल्डर में मौजूद प्रोजेक्ट को Android Studio में इंपोर्ट करें. आपको रनटाइम के कुछ अपवाद दिख सकते हैं. इसके अलावा, आपको छूटी हुई google-services.json फ़ाइल के बारे में चेतावनी भी दिख सकती है. हम अगले सेक्शन में इसे ठीक करेंगे.

इस कोडलैब में, अपने Android ऐप्लिकेशन को Firebase प्रोजेक्ट के साथ रजिस्टर करने के लिए, Firebase Assistant प्लगिन का इस्तेमाल किया जा सकता है. साथ ही, अपने Android प्रोजेक्ट में ज़रूरी Firebase कॉन्फ़िगरेशन फ़ाइलें, प्लगिन, और डिपेंडेंसी जोड़ी जा सकती है — ये सभी काम, Android Studio में किए जा सकते हैं!

अपने ऐप्लिकेशन को Firebase से कनेक्ट करना

  1. Android Studio/सहायता > अपडेट देखें और पक्का करें कि आप Android Studio और Firebase Assistant के नए वर्शन का इस्तेमाल कर रहे हैं.
  2. टूल चुनें > Assistant पैनल खोलने के लिए, Firebase.

c0e42ef063d21eab.png

  1. अपने ऐप्लिकेशन में जोड़ने के लिए, परफ़ॉर्मेंस मॉनिटरिंग चुनें. इसके बाद, परफ़ॉर्मेंस मॉनिटरिंग से शुरू करें पर क्लिक करें.
  2. अपने Android प्रोजेक्ट को Firebase से कनेक्ट करने के लिए, Firebase से कनेक्ट करें पर क्लिक करें (इससे आपके ब्राउज़र में Firebase कंसोल खुल जाएगा).
  3. Firebase कंसोल में, प्रोजेक्ट जोड़ें पर क्लिक करें. इसके बाद, Firebase प्रोजेक्ट का नाम डालें (अगर आपके पास पहले से कोई Firebase प्रोजेक्ट है, तो आपके पास उस मौजूदा प्रोजेक्ट को चुनने का विकल्प है). Firebase प्रोजेक्ट और नया Firebase ऐप्लिकेशन बनाने के लिए, जारी रखें पर क्लिक करें और शर्तों को स्वीकार करें.

इसके बाद, आपको अपने नए Firebase ऐप्लिकेशन को Android Studio प्रोजेक्ट से कनेक्ट करने के लिए एक डायलॉग बॉक्स दिखेगा.

51a549ebde2fe57a.png

  1. कनेक्ट करें पर क्लिक करें.
  2. Android Studio खोलें. Assistant पैनल में, आपको यह पुष्टि करने वाला मैसेज दिखेगा कि आपका ऐप्लिकेशन Firebase से कनेक्ट है.

40c24c4a56a45990.png

अपने ऐप्लिकेशन में परफ़ॉर्मेंस मॉनिटर करने की सुविधा जोड़ना

Android Studio में Assistant पैनल में जाकर, अपने ऐप्लिकेशन में परफ़ॉर्मेंस मॉनिटर करने की सुविधा जोड़ें पर क्लिक करें.

आपको बदलावों को स्वीकार करें के लिए एक डायलॉग दिखेगा. इसके बाद, Android Studio आपके ऐप्लिकेशन को सिंक कर देगा, ताकि यह पक्का किया जा सके कि सभी ज़रूरी डिपेंडेंसी जोड़ दी गई हैं.

3046f3e1f5fea06f.png

आखिर में, आपको Android Studio के Assistant पैनल में सफलता का मैसेज दिखेगा कि सभी डिपेंडेंसी सही तरीके से सेट अप की गई हैं.

62e79fd18780e320.png

"(ज़रूरी नहीं) डीबग लॉगिंग चालू करें" चरण में दिए गए निर्देशों का पालन करके डीबग लॉगिंग चालू करें. ये निर्देश सार्वजनिक दस्तावेज़ में भी उपलब्ध हैं.

3. ऐप्लिकेशन चलाएं

अब आपको अपने ऐप्लिकेशन के मॉड्यूल (ऐप्लिकेशन-लेवल) डायरेक्ट्री में google-services.json फ़ाइल दिखेगी. साथ ही, अब आपके ऐप्लिकेशन को कंपाइल किया जाना चाहिए. Android Studio में, Run पर क्लिक करें > अपने Android एम्युलेटर पर ऐप्लिकेशन बनाने और चलाने के लिए, ‘ऐप्लिकेशन' चलाएं.

ऐप्लिकेशन चलने के दौरान, आपको पहले इस तरह की स्प्लैश स्क्रीन दिखेगी:

ffbd413a6983b205.png

फिर, कुछ सेकंड के बाद, डिफ़ॉल्ट इमेज वाला मुख्य पेज यह दिखेगा:

d946cab0df319e50.png

हुड में क्या चल रहा है?

स्प्लैश स्क्रीन को SplashScreenActivity में लागू किया जाता है और ये काम किए जाते हैं:

  1. onCreate() में, हम Firebase रिमोट कॉन्फ़िगरेशन की सेटिंग शुरू करते हैं. साथ ही, उन कॉन्फ़िगरेशन वैल्यू को फ़ेच करते हैं जिन्हें आपने बाद में कोडलैब में रिमोट कॉन्फ़िगरेशन डैशबोर्ड में सेट किया होगा.
  2. executeTasksBasedOnRC() में, हम seasonal_image_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. अपना पहला पैरामीटर फ़ॉर्म बनाएं खोलें और सीज़न के मुताबिक इमेज के रोल आउट की वैल्यू फ़ील्ड का पता लगाएं. वह यूआरएल डालें जहां से सीज़नल इमेज डाउनलोड की जाएगी: https://images.unsplash.com/photo-1552691021-7043334e0b51
  2. डिफ़ॉल्ट वैल्यू को खाली स्ट्रिंग के तौर पर छोड़ें. इसका मतलब यह है कि कोड बेस में डिफ़ॉल्ट इमेज दिखाई जाएगी, न कि यूआरएल से डाउनलोड की गई इमेज दिखाई जाएगी.
  3. सेव करें पर क्लिक करें.

99e6cd2ebcddd.png

आपके पास यह देखने का विकल्प है कि नया कॉन्फ़िगरेशन, ड्राफ़्ट के तौर पर बनाया गया है.

  1. बदलावों को पब्लिश करें पर क्लिक करें. इसके बाद, अपने ऐप्लिकेशन को अपडेट करने के लिए, सबसे ऊपर किए गए बदलावों की पुष्टि करें.

39cd3e96d370c7ce.png

5. डेटा लोड होने में लगने वाले समय के लिए, मॉनिटरिंग की सुविधा चालू करें

आपका ऐप्लिकेशन, MainActivity दिखाने से पहले कुछ डेटा को पहले से लोड कर लेता है. साथ ही, इस प्रोसेस को छिपाने के लिए स्प्लैश स्क्रीन दिखाता है. आपको अपने उपयोगकर्ताओं को इस स्क्रीन पर ज़्यादा देर तक इंतज़ार नहीं करने देना चाहिए. इसलिए, आम तौर पर यह देखना बेहतर होता है कि स्प्लैश स्क्रीन कितनी देर तक दिखेगी.

Firebase परफ़ॉर्मेंस मॉनिटर की मदद से ऐसा किया जा सकता है. कस्टम कोड ट्रेस इंस्टॉल करके, अपने ऐप्लिकेशन में किसी कोड की परफ़ॉर्मेंस पर नज़र रखी जा सकती है. जैसे, डेटा लोड होने में लगने वाला समय और नई सुविधा को प्रोसेस करने में लगने वाला समय.

स्प्लैश स्क्रीन दिखने की अवधि ट्रैक करने के लिए, आपको SplashScreenActivity में एक कस्टम कोड ट्रेस जोड़ना होगा. यह वह Activity है जो स्प्लैश स्क्रीन को लागू करता है.

  1. splash_screen_trace नाम का कस्टम कोड ट्रेस शुरू करें, बनाएं, और उसे शुरू करें:

स्प्लैशScreenActivity.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. SplashScreenActivity में से onDestroy() तरीके में ट्रेस को खत्म करें:

स्प्लैशScreenActivity.java

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

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

आपकी नई सुविधा किसी इमेज को डाउनलोड और प्रोसेस करती है. इसलिए, आपको दूसरा कस्टम कोड ट्रेस जोड़ना होगा. इससे यह ट्रैक किया जाएगा कि सुविधा ने SplashScreenActivity में कितनी अतिरिक्त तारीख जोड़ी है.

  1. splash_seasonal_image_processing नाम का कस्टम कोड ट्रेस शुरू करें, बनाएं, और उसे शुरू करें:

स्प्लैशScreenActivity.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. RequestListener के onLoadFailed() और onResourceReady(), दोनों तरीकों में ट्रेस को खत्म करें:

स्प्लैशScreenActivity.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 कंसोल में, ट्रेस के डेटा को फ़िल्टर किया जा सकता है. आपके पास कस्टम एट्रिब्यूट जोड़ने और उनकी निगरानी करने का विकल्प भी है.

आपने अपने ऐप्लिकेशन में नई सुविधा के प्रोसेस होने के समय और स्प्लैश स्क्रीन की अवधि को मॉनिटर करने के लिए अभी-अभी दो कस्टम कोड ट्रेस जोड़े हैं. इन अवधियों पर असर डालने वाला एक कारक यह भी हो सकता है कि दिखाई गई इमेज डिफ़ॉल्ट इमेज है या नहीं या इमेज को किसी यूआरएल से डाउनलोड करना है या नहीं. यह कैसे पता चलेगा कि आपको इमेज डाउनलोड करने के लिए, अलग-अलग यूआरएल मिल सकते हैं.

इसलिए, इन कस्टम कोड ट्रेस में सीज़न के हिसाब से इमेज के यूआरएल को दिखाने वाला कस्टम एट्रिब्यूट जोड़ें. इस तरह, बाद में इन वैल्यू के हिसाब से अवधि का डेटा फ़िल्टर किया जा सकता है.

  1. executeTasksBasedOnRC तरीके की शुरुआत में, splash_screen_trace के लिए कस्टम एट्रिब्यूट (seasonal_image_url_attribute) जोड़ें:

स्प्लैशScreenActivity.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. startTrace("splash_seasonal_image_processing") कॉल के ठीक बाद splash_seasonal_image_processing के लिए वही कस्टम एट्रिब्यूट जोड़ें:

स्प्लैशScreenActivity.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);

    // ...
}

आपने अपने दोनों कस्टम ट्रेस (splash_screen_trace और splash_seasonal_image_processing) के लिए कस्टम एट्रिब्यूट (seasonal_image_url_attribute) जोड़ लिया है. इसलिए, अब Android Studio में फिर से ऐप्लिकेशन चलाएं. आपको एक लॉगिंग मैसेज दिखेगा जिसमें Setting attribute 'seasonal_image_url_attribute' to 'unset' on trace 'splash_screen_trace'. शामिल है. आपने अभी तक रिमोट कॉन्फ़िगरेशन पैरामीटर सीज़नalImageUrl को चालू नहीं किया है. इसलिए इस एट्रिब्यूट की वैल्यू unset है.

परफ़ॉर्मेंस मॉनिटर करने वाला SDK टूल, ट्रेस डेटा इकट्ठा करेगा और उसे Firebase में भेजेगा. यह डेटा, Firebase कंसोल के परफ़ॉर्मेंस डैशबोर्ड में देखा जा सकता है. इसके बारे में हम कोडलैब के अगले चरण में विस्तार से बताएंगे.

7. परफ़ॉर्मेंस मॉनिटर करने वाले डैशबोर्ड को कॉन्फ़िगर करना

अपनी सुविधा को मॉनिटर करने के लिए, अपना डैशबोर्ड कॉन्फ़िगर करना

Firebase कंसोल में वह प्रोजेक्ट चुनें जिसमें आपका फ़्रेंडली ईट ऐप्लिकेशन मौजूद है.

बाएं पैनल में, रिलीज़ और मॉनिटर करें सेक्शन में जाकर, परफ़ॉर्मेंस पर क्लिक करें.

आपको अपने मेट्रिक बोर्ड में अपने सबसे पहले डेटा पॉइंट के साथ अपना परफ़ॉर्मेंस डैशबोर्ड दिखेगा! परफ़ॉर्मेंस मॉनिटर करने वाला 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 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 पर क्लिक करें:

8fa1a69019bb045e.png

  1. आपकी स्प्लैश स्क्रीन अवधि की वैल्यू, ऊपर दिए गए स्क्रीनशॉट से कुछ अलग हो सकती हैं. हालांकि, अगर किसी इमेज को यूआरएल से डाउनलोड किया जाता है और डिफ़ॉल्ट इमेज ("अनसेट" से दिखती है) का इस्तेमाल करके, इमेज को डाउनलोड किया जाता है, तो आपके पास ज़्यादा अवधि होनी चाहिए.

इस कोडलैब में, लंबी अवधि की अवधि आसानी से बताई जा सकती है, लेकिन असल ऐप्लिकेशन में होने की वजह साफ़ तौर पर पता नहीं चल पाती है. इकट्ठा किया गया कुल समय का डेटा, अलग-अलग डिवाइसों से मिलेगा और ऐप्लिकेशन को इंटरनेट की अलग-अलग स्थितियों में इस्तेमाल किया जाएगा. साथ ही, ये स्थितियां आपकी उम्मीद से ज़्यादा खराब हो सकती हैं. आइए देखते हैं कि अगर असल हालात में ऐसा होता, तो आप इस मामले की जांच कैसे करते.

  1. डैशबोर्ड के मुख्य टैब पर वापस जाने के लिए पेज के सबसे ऊपर मौजूद परफ़ॉर्मेंस पर क्लिक करें: 640b696b79d90103.png
  2. पेज के सबसे नीचे मौजूद ट्रेस टेबल में, नेटवर्क अनुरोध टैब पर क्लिक करें. इस टेबल में, आपको अपने ऐप्लिकेशन के यूआरएल पैटर्न में इकट्ठा किए गए सभी नेटवर्क अनुरोध दिखेंगे. इनमें 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 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. गड़बड़ियां ठीक करने की जांच करें और सूचनाएं सेट अप करें

ऐप्लिकेशन को डिवाइस पर चलाएं

अगर नई कॉन्फ़िगरेशन वैल्यू, डाउनलोड की जा सकने वाली इमेज के यूआरएल का इस्तेमाल करने के लिए सेट है, तो ऐप्लिकेशन को फिर से चलाएं. इस बार आपने ध्यान दिया होगा कि स्प्लैश स्क्रीन पर बिताया गया समय पहले से कम हो गया है.

b0cc91b6e48fb842.png

बदलावों की परफ़ॉर्मेंस देखना

मेट्रिक कैसी दिखती हैं, यह देखने के लिए Firebase कंसोल में परफ़ॉर्मेंस डैशबोर्ड पर वापस जाएं.

  1. इस बार आपको ज़्यादा जानकारी वाले पेज पर जाने के लिए, ट्रेस टेबल का इस्तेमाल करना होगा. ट्रेस टेबल में नीचे जाकर, कस्टम ट्रेस टैब में, कस्टम ट्रेस splash_seasonal_image_processing पर क्लिक करें. इससे, 'अवधि की जानकारी' वाली मेट्रिक के बारे में ज़्यादा जानकारी फिर से दिखेगी.

2d7aaca03112c062.png

  1. कस्टम एट्रिब्यूट का ब्रेकडाउन फिर से देखने के लिए, कस्टम एट्रिब्यूट seasonal_image_url_attribute पर क्लिक करें. अगर आप यूआरएल पर माउस घुमाते हैं, तो आपको कम साइज़ वाली इमेज के नए यूआरएल से मेल खाने वाली वैल्यू दिखेगी: https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640 (आखिर में ?w=640 होगा). इस इमेज से जुड़ी अवधि की वैल्यू, पिछली इमेज के लिए दी गई वैल्यू से काफ़ी कम है. साथ ही, यह आपके उपयोगकर्ताओं के लिए ज़्यादा सही है!

10e30c037a4237a2.png

  1. आपने स्प्लैश स्क्रीन की परफ़ॉर्मेंस को बेहतर कर लिया है. अब किसी ट्रेस के सेट की गई थ्रेशोल्ड से ज़्यादा होने पर, आपको इसकी सूचना देने के लिए सूचनाएं पाने की सुविधा सेट अप की जा सकती है. परफ़ॉर्मेंस का डैशबोर्ड खोलें और स्प्लैश_screen_trace के लिए ओवरफ़्लो मेन्यू (तीन बिंदु वाले) आइकॉन पर क्लिक करें. इसके बाद, सूचना सेटिंग पर क्लिक करें.

4bd0a2a1faa14479.png

  1. अवधि से जुड़ी सूचना चालू करने के लिए टॉगल पर क्लिक करें. थ्रेशोल्ड वैल्यू को, दिख रही वैल्यू से कुछ ज़्यादा पर सेट करें. इससे अगर आपका स्प्लैश_screen_trace, थ्रेशोल्ड से ज़्यादा है, तो आपको एक ईमेल मिलेगा.
  1. सूचना बनाने के लिए सेव करें पर क्लिक करें. नीचे स्क्रोल करके ट्रेस टेबल पर जाएं. इसके बाद, कस्टम ट्रेस टैब पर क्लिक करके देखें कि आपकी सूचना चालू है या नहीं!

2bb93639e2218d1.png

13. बधाई हो!

बधाई हो! आपने Firebase परफ़ॉर्मेंस मॉनिटर करने वाले SDK टूल को चालू किया है और नई सुविधा की परफ़ॉर्मेंस को मेज़र करने के लिए ट्रेस इकट्ठा किए हैं! आपने नई सुविधा के लॉन्च से जुड़ी मुख्य परफ़ॉर्मेंस मेट्रिक पर नज़र रखी. परफ़ॉर्मेंस से जुड़ी समस्या का पता चलने पर, आपने तुरंत प्रतिक्रिया दी. रिमोट कॉन्फ़िगरेशन की मदद से कॉन्फ़िगरेशन में बदलाव करने और रीयल टाइम में परफ़ॉर्मेंस से जुड़ी समस्याओं पर नज़र रखने की सुविधा की मदद से यह सब किया जा सकता था.

हमने इन विषयों के बारे में बताया

  • अपने ऐप्लिकेशन में, Firebase परफ़ॉर्मेंस मॉनिटर करने वाला SDK टूल जोड़ना
  • किसी सुविधा को मेज़र करने के लिए, अपने कोड में कस्टम कोड ट्रेस जोड़ना
  • नई सुविधा को कंट्रोल/रोल आउट करने के लिए, रिमोट कॉन्फ़िगरेशन पैरामीटर और कंडिशनल वैल्यू सेट अप करना
  • रोल आउट के दौरान आने वाली समस्याओं का पता लगाने के लिए, परफ़ॉर्मेंस मॉनिटर करने वाले डैशबोर्ड का इस्तेमाल करने का तरीका समझना
  • परफ़ॉर्मेंस अलर्ट सेट अप करना, ताकि जब आपके ऐप्लिकेशन की परफ़ॉर्मेंस, तय किए गए थ्रेशोल्ड को पार कर जाए, तब आपको इसकी सूचना दी जा सके

ज़्यादा जानें