1. סקירה כללית
ב-codelab הזה תלמדו איך לעקוב אחרי הביצועים של האפליקציה במהלך השקת תכונה. לאפליקציה לדוגמה שלנו תהיה פונקציונליות בסיסית, והיא מוגדרת להצגת תמונת רקע שונה על סמך דגל של הגדרת תצורה מרחוק ב-Firebase. נסביר איך להטמיע מעקב כדי לעקוב אחרי הביצועים של האפליקציה, איך להפיץ שינוי בהגדרות של האפליקציה, איך לעקוב אחרי ההשפעה ואיך לשפר את הביצועים.
מה תלמדו
- איך מוסיפים את Firebase Performance Monitoring לאפליקציה לנייד כדי לקבל מדדים מוכנים לשימוש (כמו זמן הפעלת האפליקציה ופריימים איטיים או קפואים)
- איך מוסיפים עקבות מותאמות אישית כדי להבין נתיבי קוד קריטיים בתהליכים שעוברים המשתמשים
- איך משתמשים בלוח הבקרה של מעקב אחר ביצועים כדי להבין את המדדים ולעקוב אחרי שינויים חשובים כמו השקת תכונה
- איך מגדירים התראות על ביצועים כדי לעקוב אחרי מדדי המפתח
- איך משיקים שינוי בהגדרת תצורה מרחוק ב-Firebase
דרישות מוקדמות
- Android Studio מגרסה 4.0 ואילך
- אמולטור Android עם API ברמה 16 ומעלה.
- Java מגרסה 8 ואילך
- הבנה בסיסית של הגדרת תצורה מרחוק ב-Firebase
2. הגדרת פרויקט לדוגמה
הורדת הקוד
מריצים את הפקודה הבאה כדי לשכפל את קוד לדוגמה של ה-codelab הזה. תיקייה בשם 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
חסר. בקטע הבא נסביר איך לפתור את הבעיה.
ב-codelab הזה תשתמשו בפלאגין Firebase Assistant כדי לרשום את אפליקציית Android בפרויקט Firebase ולהוסיף לפרויקט Android את קובצי ההגדרות, הפלאגינים והתלות הדרושים של Firebase – הכול מתוך Android Studio!
קישור האפליקציה ל-Firebase
- כדי לוודא שאתם משתמשים בגרסאות העדכניות של Android Studio ושל Firebase Assistant, עוברים אל Android Studio/Help (עזרה) > Check for updates (בדיקת עדכונים).
- בוחרים באפשרות כלים > Firebase כדי לפתוח את החלונית Assistant (עזרה).
- בוחרים באפשרות מעקב אחר ביצועים כדי להוסיף אותה לאפליקציה, ואז לוחצים על תחילת העבודה עם מעקב אחר ביצועים.
- לוחצים על Connect to Firebase (קישור אל Firebase) כדי לקשר את פרויקט Android אל Firebase. (מסוף Firebase ייפתח בדפדפן)
- לוחצים על הלחצן ליצירת פרויקט חדש ומזינים שם לפרויקט (לדוגמה,
Feature Rollout Performance Codelab
). - לוחצים על המשך.
- אם מוצגת בקשה לעשות זאת, קוראים ומאשרים את התנאים של Firebase, ואז לוחצים על המשך.
- (אופציונלי) מפעילים את העזרה מבוססת-AI במסוף Firebase (שנקראת Gemini ב-Firebase).
- לצורך ה-codelab הזה לא צריך להשתמש ב-Google Analytics, ולכן משביתים את האפשרות Google Analytics.
אפשר גם להפעיל את Google Analytics כדי לקבל אפשרויות טירגוט מורחבות של Remote Config. עם זאת, ב-codelab הזה נעשה שימוש באפשרות טירגוט שלא דורשת Google Analytics. - אחרי כן אמור להופיע תיבת דו-שיח עם האפשרות Connect (קישור) של אפליקציית Firebase החדשה לפרויקט Android Studio.
- לוחצים על חיבור.
- פותחים את Android Studio. בחלונית Assistant, תופיע הודעת אישור שהאפליקציה מקושרת ל-Firebase.
הוספת מעקב אחר הביצועים לאפליקציה
בחלונית Assistant ב-Android Studio, לוחצים על Add Performance Monitoring to your app.
אחרי שתלחצו על Accept Changes (אישור השינויים), אמור להופיע תיבת דו-שיח שבה תתבקשו לסנכרן את האפליקציה עם Android Studio כדי לוודא שכל התלות הנדרשת נוספה.
לבסוף, בחלונית Assistant ב-Android Studio אמורה להופיע הודעה שההגדרה של כל יחסי התלות בוצעה בצורה תקינה.
בנוסף, אפשר להפעיל רישום ביומן לניפוי באגים לפי ההוראות בשלב '(אופציונלי) הפעלת רישום ביומן לניפוי באגים'. אותן הוראות זמינות גם בתיעוד שגלוי לכולם.
3. הפעלת האפליקציה
עכשיו אמור להופיע קובץ google-services.json
בספריית המודול (ברמת האפליקציה) של האפליקציה, והאפליקציה אמורה להתקמפל. ב-Android Studio, לוחצים על Run (הפעלה) > Run ‘app' (הפעלת האפליקציה) כדי ליצור ולהפעיל את האפליקציה באמולטור של Android.
כשהאפליקציה פועלת, אמור להופיע מסך פתיחה כזה:
אחרי כמה שניות, הדף הראשי עם תמונת ברירת המחדל יוצג:
מה קורה מאחורי הקלעים?
מסך הפתיחה מיושם ב- SplashScreenActivity ומבצע את הפעולות הבאות:
- בקטע
onCreate()
, מאתחלים את ההגדרות של Firebase Remote Config ומאחזרים את ערכי ההגדרה שתגדירו בהמשך במרכז הבקרה של Remote Config. - ב-
executeTasksBasedOnRC()
, אנחנו קוראים את ערך התצורה של הדגלseasonal_image_url
. אם כתובת URL מסופקת על ידי ערך ההגדרה, אנחנו מורידים את התמונה באופן סינכרוני. - בסיום ההורדה, האפליקציה עוברת אל MainActivity וקוראת ל-
finish()
כדי לסיים אתSplashScreenActivity
.
ב-MainActivity
, אם seasonal_image_url
מוגדר באמצעות הגדרת התצורה מרחוק, התכונה תופעל והתמונה שהורדה תוצג כרקע של הדף הראשי. אחרת, תוצג תמונת ברירת המחדל (שמוצגת למעלה).
4. הגדרת תצורה מרחוק
עכשיו, כשהאפליקציה פועלת, אפשר להגדיר את דגל התכונה החדש.
- בחלונית הימנית של מסוף Firebase, מאתרים את הקטע Engage ולוחצים על Remote Config.
- לוחצים על הלחצן Create configuration (יצירת הגדרה) כדי לפתוח את טופס ההגדרה ומוסיפים את
seasonal_image_url
כמפתח הפרמטר. - לוחצים על הוספת תיאור ומזינים את התיאור הבא:
Shows a seasonal image (replaces default) in the main page when the restaurant list is empty.
- לוחצים על הוספת תנאי חדש -> ערך מותנה -> יצירת תנאי חדש.
- בשדה של שם התנאי, מזינים
Seasonal image rollout
. - בקטע
Applies if...
, בוחרים באפשרותUser in random percentile <= 0%
. (אתם רוצים להשאיר את התכונה מושבתת עד שתהיו מוכנים להשיק אותה בשלב מאוחר יותר). - לוחצים על יצירת תנאי. תשתמשו בתנאי הזה בהמשך כדי להשיק את התכונה החדשה למשתמשים.
- פותחים את Create your first parameter form (יצירת הטופס הראשון של הפרמטר) ומאתרים את השדה Value for Seasonal image rollout (ערך להצגת תמונות עונתיות). מזינים את כתובת ה-URL שממנה תתבצע ההורדה של התמונה העונתית:
https://images.unsplash.com/photo-1552691021-7043334e0b51
- משאירים את ערך ברירת המחדל כמחרוזת ריקה. כלומר, תוצג תמונת ברירת המחדל בבסיס הקוד ולא תמונה שהורדה מכתובת URL.
- לוחצים על שמירה.
אפשר לראות שההגדרה החדשה נוצרה כטיוטה.
- לוחצים על פרסום השינויים ומאשרים את השינויים בחלק העליון כדי לעדכן את האפליקציה.
5. הוספת מעקב אחר זמן טעינת הנתונים
האפליקציה טוענת מראש חלק מהנתונים לפני הצגת MainActivity
ומציגה מסך פתיחה כדי להסתיר את התהליך הזה. לא כדאי שהמשתמשים יחכו יותר מדי זמן במסך הזה, ולכן בדרך כלל מומלץ לעקוב אחרי משך הזמן שבו מסך הפתיחה מוצג.
מעקב אחרי ביצועים ב-Firebase מאפשר לכם לעשות בדיוק את זה. אתם יכולים להשתמש במעקב אחר קוד בהתאמה אישית כדי לעקוב אחרי הביצועים של קוד ספציפי באפליקציה – כמו זמן הטעינה של הנתונים וזמן העיבוד של התכונה החדשה.
כדי לעקוב אחרי משך הזמן שבו מסך הפתיחה מוצג, צריך להוסיף מעקב קוד בהתאמה אישית אל SplashScreenActivity
, שהוא Activity
שמטמיע את מסך הפתיחה.
- מאתחלים, יוצרים ומתחילים מעקב אחר קוד בהתאמה אישית בשם
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");
// ...
}
- מסתיימת בשיטה
onDestroy()
שלSplashScreenActivity
:
SplashScreenActivity.java
@Override
protected void onDestroy() {
super.onDestroy();
// TODO: Stop the splash_screen_trace here
splashScreenTrace.stop();
}
מכיוון שהתכונה החדשה שלכם מורידה ומעבדת תמונה, תוסיפו עוד מעקב קוד מותאם אישית שיעקוב אחרי הזמן הנוסף שהתכונה מוסיפה ל-SplashScreenActivity
.
- מאתחלים, יוצרים ומתחילים מעקב אחר קוד בהתאמה אישית בשם
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");
// ...
}
}
- בשיטות
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 console. אפשר גם להוסיף מאפיינים מותאמים אישית ולעקוב אחריהם.
באפליקציה, הרגע הוספת שני מעקבים של קוד מותאם אישית כדי לעקוב אחרי משך זמן ההצגה של מסך הפתיחה וזמן העיבוד של התכונה החדשה. אחד הגורמים שיכולים להשפיע על משכי הזמן האלה הוא אם התמונה שמוצגת היא תמונת ברירת המחדל או אם צריך להוריד את התמונה מכתובת URL. ואף פעם אי אפשר לדעת – יכול להיות שבסופו של דבר יהיו לכם כתובות URL שונות שמתוכן תוכלו להוריד תמונה.
לכן, נוסיף למעקבים האלה של קוד מותאם אישית מאפיין מותאם אישית שמייצג את כתובת ה-URL של התמונה העונתית. כך תוכלו לסנן את נתוני משך הזמן לפי הערכים האלה בהמשך.
- מוסיפים את המאפיין המותאם אישית (
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);
}
// ...
}
- מוסיפים את אותו מאפיין מותאם אישית ל-
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'.
You have not yet enabled the Remote Config parameter seasonalImageUrl which is why the attribute value is unset
.
ה-SDK של Performance Monitoring יאסוף את נתוני המעקב וישלח אותם ל-Firebase. אפשר לראות את הנתונים בלוח הבקרה לביצועים ב-Firebase Console, שיוסבר בפירוט בשלב הבא של ה-codelab.
7. הגדרת לוח הבקרה 'מעקב אחרי ביצועים'
הגדרת מרכז הבקרה למעקב אחרי התכונה
ב-Firebase console, בוחרים את הפרויקט שכולל את אפליקציית Friendly Eats.
בחלונית הימנית, מאתרים את הקטע השקה ומעקב ולוחצים על ביצועים.
אחרי שתגדירו את המדדים, תוכלו לראות את מרכז הבקרה ביצועים עם נקודות הנתונים הראשונות בלוח המדדים. ה-SDK של Performance Monitoring אוסף נתוני ביצועים מהאפליקציה ומציג אותם תוך דקות מהאיסוף.
לוח המדדים הזה מאפשר לעקוב אחרי מדדים חשובים של האפליקציה. תצוגת ברירת המחדל כוללת את משך הזמן של מעקב אחר זמן ההפעלה של האפליקציה, אבל אפשר להוסיף את המדדים שהכי חשובים לכם. מכיוון שאתם עוקבים אחרי התכונה החדשה שהוספתם, אתם יכולים להתאים אישית את לוח הבקרה כך שיוצג בו משך הזמן של מעקב הקוד המותאם אישית splash_screen_trace
.
- לוחצים על אחת מהתיבות הריקות Select a metric.
- בתיבת הדו-שיח, בוחרים את סוג העקבות Custom traces (עקבות בהתאמה אישית) ואת שם העקבות
splash_screen_trace
.
- לוחצים על Select metric (בחירת מדד), ומשך הזמן של
splash_screen_trace
יתווסף למרכז הבקרה.
אתם יכולים להשתמש באותם שלבים כדי להוסיף מדדים אחרים שחשובים לכם, וכך לראות במהירות איך הביצועים שלהם משתנים לאורך זמן ואפילו בין גרסאות שונות.
לוח המדדים הוא כלי רב עוצמה למעקב אחר הביצועים של מדדים מרכזיים שמשפיעים על חוויית המשתמש. ב-codelab הזה יש לכם קבוצה קטנה של נתונים בטווח זמן מצומצם, ולכן תשתמשו בתצוגות אחרות של לוח הבקרה שיעזרו לכם להבין את הביצועים של השקת התכונה.
8. השקת התכונה
אחרי שמגדירים את המעקב, אפשר להפעיל את השינוי בהגדרת התצורה מרחוק ב-Firebase (seasonal_image_url)
שהגדרתם קודם).
כדי להשיק שינוי, חוזרים אל דף ההגדרה מרחוק במסוף Firebase כדי להגדיל את אחוז המשתמשים של תנאי הטירגוט. בדרך כלל, משיקים תכונות חדשות לחלק קטן מהמשתמשים ומגדילים את החלק הזה רק כשבטוחים שאין בעיות בתכונה. אבל ב-Codelab הזה אתם המשתמשים היחידים באפליקציה, ולכן אתם יכולים לשנות את האחוזון ל-100%.
- לוחצים על הכרטיסייה תנאים בחלק העליון של הדף.
- לוחצים על התנאי
Seasonal image rollout
שהוספתם קודם. - משנים את האחוזון ל-100%.
- לוחצים על שמירת התנאי.
- לוחצים על פרסום השינויים ומאשרים את השינויים.
חוזרים ל-Android Studio ומפעילים מחדש את האפליקציה באמולטור כדי לראות את התכונה החדשה. אחרי מסך הפתיחה, אמור להופיע המסך הראשי החדש עם מצב ריק.
9. בדיקת השינויים בביצועים
עכשיו נבדוק את הביצועים של טעינת מסך הפתיחה באמצעות לוח הבקרה 'ביצועים' במסוף Firebase. בשלב הזה של ה-codelab, תשתמשו בחלקים שונים של לוח הבקרה כדי לראות נתוני ביצועים.
- בכרטיסייה הראשית לוח בקרה, גוללים למטה לטבלת העקבות ולוחצים על הכרטיסייה עקבות בהתאמה אישית. בטבלה הזו יופיעו עקבות הקוד המותאם אישית שהוספתם קודם, וגם כמה עקבות מוכנות לשימוש.
- אחרי שמפעילים את התכונה החדשה, מחפשים את מעקב הקוד המותאם אישית
splash_seasonal_image_processing
, שבו נמדד הזמן שלקח להוריד ולעבד את התמונה. מערך הערך של משך הזמן של העקבות, אפשר לראות שההורדה והעיבוד האלה אורכים זמן רב.
- מכיוון שיש לכם נתונים לגבי
splash_seasonal_image_processing
, אתם יכולים להוסיף את משך הזמן של העקבות הזה ללוח המדדים בחלק העליון של הכרטיסייה לוח בקרה.
בדומה לשלבים הקודמים, לוחצים על אחת מהתיבות הריקות Select a metric. בתיבת הדו-שיח, בוחרים את סוג העקבות Custom traces (עקבות בהתאמה אישית) ואת שם העקבות splash_seasonal_image_processing
. לבסוף, לוחצים על בחירת מדד כדי להוסיף את המדד הזה ללוח המדדים.
- כדי לאשר את ההבדלים, אפשר לבדוק את הנתונים של
splash_screen_trace
. לוחצים על הכרטיסsplash_screen_trace
בלוח המדדים, ואז לוחצים על הצגת פרטי המדד.
- בדף הפרטים, בצד ימין למטה, תופיע רשימת מאפיינים, כולל המאפיין המותאם אישית שיצרתם קודם. לוחצים על המאפיין המותאם אישית
seasonal_image_url_attribute
כדי לראות את משך הזמן של מסך הפתיחה לכל כתובת URL של תמונה עונתית בצד שמאל:
- ערכי משך הזמן של מסך הפתיחה יהיו כנראה קצת שונים מאלה שמופיעים בצילום המסך שלמעלה, אבל אמור להיות משך זמן ארוך יותר כשמורידים את התמונה מכתובת URL לעומת שימוש בתמונת ברירת המחדל (שמיוצגת על ידי unset).
ב-Codelab הזה, הסיבה למשך הזמן הארוך יותר עשויה להיות ברורה, אבל באפליקציה אמיתית, יכול להיות שהיא לא תהיה כל כך ברורה. נתוני משך הזמן שנאספים מגיעים ממכשירים שונים שבהם האפליקציה פועלת בתנאי חיבור שונים לרשת, והתנאים האלה יכולים להיות גרועים יותר מהצפוי. בואו נראה איך הייתם בודקים את הבעיה הזו אם זה היה קורה במציאות.
- כדי לחזור לכרטיסייה הראשית מרכז הבקרה, לוחצים על ביצועים בחלק העליון של הדף:
- בטבלת העקבות בחלק התחתון של הדף, לוחצים על הכרטיסייה בקשות רשת. בטבלה הזו מוצגות כל בקשות הרשת מהאפליקציה שלכם שנצברות לתבניות של כתובות URL, כולל תבנית כתובת ה-URL
images.unsplash.com/**
. אם משווים את ערך זמן התגובה הזה לזמן הכולל שנדרש להורדה ולעיבוד של התמונה (כלומר, משך הזמן שלsplash_seasonal_image_processing
העקבות), אפשר לראות שחלק גדול מהזמן מושקע בהורדה של התמונה.
ממצאים לגבי הביצועים
באמצעות מעקב אחר ביצועים ב-Firebase, ראיתם את ההשפעה הבאה על משתמשי הקצה כשהתכונה החדשה מופעלת:
- משך הזמן שבילית ב-
SplashScreenActivity
עלה. - משך הזמן של
splash_seasonal_image_processing
היה ארוך מאוד. - העיכוב נבע מזמן התגובה להורדת התמונה ומזמן העיבוד הנדרש לתמונה.
בשלב הבא, תצמצמו את ההשפעה על הביצועים על ידי ביטול השינוי שבוצע בתכונה, ותזהו דרכים לשפר את ההטמעה שלה.
10. החזרה של התכונה לגרסה קודמת
לא מומלץ להגדיל את זמן ההמתנה של המשתמשים במהלך מסך הפתיחה. אחד היתרונות העיקריים של הגדרת תצורה מרחוק הוא האפשרות להשהות את ההשקה ולבטל אותה בלי לפרסם גרסה נוספת למשתמשים. כך תוכלו להגיב במהירות לבעיות (כמו בעיות בביצועים שגיליתם בשלב הקודם) ולצמצם את מספר המשתמשים שלא מרוצים.
כדי לצמצם את הסיכון במהירות, מאפסים את אחוז הפריסה בחזרה ל-0
כדי שכל המשתמשים יראו שוב את תמונת ברירת המחדל:
- חוזרים אל הדף 'הגדרת תצורה מרחוק' במסוף Firebase.
- לוחצים על תנאים בראש הדף.
- לוחצים על התנאי
Seasonal image rollout
שהוספתם קודם. - משנים את האחוזון ל0%.
- לוחצים על שמירת התנאי.
- לוחצים על פרסום השינויים ומאשרים את השינויים.
מפעילים מחדש את האפליקציה ב-Android Studio, וצריך לראות את המסך הראשי המקורי במצב ריק:
11. פתרון בעיות בביצועים
במהלך ה-codelab גיליתם שהורדה של תמונה למסך הפתיחה גורמת להאטה באפליקציה. כשבודקים את התמונה שהורדתם, רואים שאתם משתמשים ברזולוציה המקורית של התמונה, שהייתה מעל 2MB! פתרון מהיר לבעיית הביצועים הוא להקטין את הרזולוציה של התמונה לרמה מתאימה יותר, כדי שההורדה שלה תיקח פחות זמן.
הפעלת הערך של הגדרת התצורה מרחוק שוב
- חוזרים אל הדף 'הגדרת תצורה מרחוק' במסוף Firebase.
- לוחצים על סמל העריכה של הפרמטר
seasonal_image_url
. - מעדכנים את הערך של Value for Seasonal image rollout (ערך להצגת תמונות עונתיות) ל-
https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640
ולוחצים על Save (שמירה).
- לוחצים על הכרטיסייה תנאים בחלק העליון של הדף.
- לוחצים על השקת תמונות עונתיות ומגדירים את האחוזון בחזרה ל-100%.
- לוחצים על שמירת התנאי.
- לוחצים על הלחצן פרסום השינויים.
12. בדיקת התיקון והגדרת התראות
הפעלת האפליקציה באופן מקומי
מגדירים את ערך התצורה החדש לשימוש בכתובת URL אחרת של תמונה להורדה, ומריצים את האפליקציה שוב. הפעם, תשימו לב שהזמן שמוקדש למסך הפתיחה קצר יותר מבעבר.
צפייה בביצועים של השינויים
חוזרים אל לוח הבקרה של הביצועים במסוף Firebase כדי לראות איך המדדים נראים.
- הפעם תשתמשו בטבלת העקבות כדי לעבור לדף הפרטים. בתחתית הטבלה של העקבות, בכרטיסייה Custom traces, לוחצים על העקבה המותאמת אישית
splash_seasonal_image_processing
כדי לראות שוב תצוגה מפורטת יותר של מדד משך הזמן שלה.
- לוחצים על המאפיין המותאם אישית
seasonal_image_url_attribute
כדי לראות שוב את פירוט המאפיינים המותאמים אישית. אם מעבירים את העכבר מעל כתובות ה-URL, מוצג ערך שתואם לכתובת ה-URL החדשה של התמונה בגודל המופחת:https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640
(עם?w=640
בסוף). ערך משך הזמן שמשויך לתמונה הזו קצר משמעותית מהערך של התמונה הקודמת, והוא מקובל יותר על המשתמשים שלכם.
- אחרי ששיפרתם את הביצועים של מסך הפתיחה, אתם יכולים להגדיר התראות שישלחו לכם כשהמעקב יעבור את הסף שהגדרתם. פותחים את מרכז הבקרה של הביצועים, לוחצים על סמל האפשרויות הנוספות (3 נקודות) של splash_screen_trace ואז על הגדרות התראות.
- לוחצים על המתג כדי להפעיל את ההתראה משך. מגדירים את ערך הסף כך שיהיה קצת מעל הערך שראיתם, כדי שאם הערך של splash_screen_trace יעבור את הסף, תקבלו אימייל.
- לוחצים על שמירה כדי ליצור את ההתראה. גוללים למטה אל טבלת העקבות ולוחצים על הכרטיסייה עקבות בהתאמה אישית כדי לראות שההתראה מופעלת.
13. כל הכבוד!
כל הכבוד! הפעלתם את Firebase Performance Monitoring SDK ואספתם נתוני מעקב כדי למדוד את הביצועים של תכונה חדשה. עקבתם אחרי מדדי ביצועים מרכזיים במהלך ההשקה של תכונה חדשה, והגבתם במהירות כשגיליתם בעיה בביצועים. הצלחנו לעשות את כל זה בזכות היכולת לבצע שינויים בהגדרות באמצעות הגדרת התצורה מרחוק ולעקוב אחרי בעיות בביצועים בזמן אמת.
מה נכלל
- הוספת Firebase Performance Monitoring SDK לאפליקציה
- הוספת מעקב קוד מותאם אישית לקוד כדי למדוד תכונה ספציפית
- הגדרה של פרמטר של הגדרת התצורה מרחוק וערך מותנה כדי לשלוט בתכונה חדשה או להשיק אותה
- איך משתמשים בלוח הבקרה של מעקב הביצועים כדי לזהות בעיות במהלך השקת מוצר
- הגדרת התראות על ביצועים כדי לקבל הודעה כשהביצועים של האפליקציה חוצים סף שהגדרתם