| בחירת פלטפורמה: | iOS+ Android Flutter Unity |
אפשר ללחוץ על בעיה מסוימת ולקבל דוח אירועים מפורט במרכז הבקרה של DevOps ומעורבות > Crashlytics במסוף Firebase. אתם יכולים להתאים אישית את הדוחות האלה כדי להבין טוב יותר מה קורה באפליקציה ואת הנסיבות שקשורות לאירועים שמדווחים ל-Crashlytics.
דיווח על חריגות שלא נתפסו ועל חריגות שנתפסו ל-Crashlytics.
מגדירים את האפליקציה כך שתתעד מפתחות בהתאמה אישית, הודעות בהתאמה אישית ביומן ומזהי משתמשים.
אם האפליקציה משתמשת ב-Firebase SDK ל-Google Analytics, אתם מקבלים באופן אוטומטי יומני פעולות משתמש. היומנים האלה מאפשרים לכם לראות את פעולות המשתמשים שהובילו לאירוע שנאסף על ידי Crashlytics באפליקציה.
משביתים את הדיווח האוטומטי על קריסות ומפעילים דיווח בהצטרפות למשתמשים. חשוב לדעת שכברירת מחדל, מערכת Crashlytics אוספת באופן אוטומטי דוחות קריסה ברמת שפת המכונה של הפלטפורמה מכל משתמשי האפליקציה.
דיווח על חריגות
דיווח על חריגות שלא נתפסו
כדי לתעד באופן אוטומטי את כל השגיאות החמורות שמתרחשות ב-Flutter framework, אפשר לשנות את FlutterError.onError באמצעות FirebaseCrashlytics.instance.recordFlutterFatalError. לחלופין, כדי לתפוס גם חריגות "לא קריטיות", אפשר לשנות את FlutterError.onError ל-FirebaseCrashlytics.instance.recordFlutterError:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
bool weWantFatalErrorRecording = true;
FlutterError.onError = (errorDetails) {
if(weWantFatalErrorRecording){
FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
} else {
FirebaseCrashlytics.instance.recordFlutterError(errorDetails);
}
};
runApp(MyApp());
}
שגיאות אסינכרוניות
שגיאות אסינכרוניות לא נתפסות על ידי מסגרת Flutter:
ElevatedButton(
onPressed: () async {
throw Error();
}
...
)
כדי לזהות שגיאות כאלה, אפשר להשתמש ב-handler של PlatformDispatcher.instance.onError:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
FlutterError.onError = (errorDetails) {
FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
};
// Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
PlatformDispatcher.instance.onError = (error, stack) {
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
return true;
};
runApp(MyApp());
}
שגיאות מחוץ ל-Flutter
כדי לתפוס שגיאות שמתרחשות מחוץ להקשר של Flutter, צריך להתקין מאזין לשגיאות ב-Isolate הנוכחי:
Isolate.current.addErrorListener(RawReceivePort((pair) async {
final List<dynamic> errorAndStacktrace = pair;
await FirebaseCrashlytics.instance.recordError(
errorAndStacktrace.first,
errorAndStacktrace.last,
fatal: true,
);
}).sendPort);
דיווח על חריגים שזוהו
בנוסף לדיווח אוטומטי על קריסות של האפליקציה, Crashlytics מאפשר לתעד חריגות לא קריטיות ולשלוח אותן אליכם בפעם הבאה שמדווח אירוע קריטי או כשהאפליקציה מופעלת מחדש.
משתמשים ב-method recordError כדי לתעד חריגות לא קריטיות בבלוקים של catch באפליקציה. לדוגמה:
await FirebaseCrashlytics.instance.recordError(
error,
stackTrace,
reason: 'a non-fatal error'
);
// Or you can use:
await FirebaseCrashlytics.instance.recordFlutterError(errorDetails);
אפשר גם לתעד מידע נוסף על השגיאה באמצעות המאפיין information:
await FirebaseCrashlytics.instance.recordError(
error,
stackTrace,
reason: 'a non-fatal error',
information: ['further diagnostic information about the error', 'version 2.0'],
);
החריגות האלה מופיעות כבעיות לא קריטיות במרכז הבקרה DevOps & Engagement > Crashlytics במסוף Firebase. סיכום הבעיה מכיל את כל פרטי המצב שאתם מקבלים בדרך כלל מקריסות, וגם פירוט לפי גרסה ומכשיר חומרה.
Crashlytics מעבד חריגים בשרשור רקע ייעודי כדי למזער את ההשפעה על הביצועים של האפליקציה. כדי לצמצם את התנועה ברשת של המשתמשים, Crashlytics יגביל את קצב השליחה של הדוחות מהמכשיר, אם יהיה צורך.
הוספת מפתחות בהתאמה אישית
מפתחות בהתאמה אישית עוזרים לכם לקבל את המצב הספציפי של האפליקציה לפני הקריסה. אתם יכולים לשייך צמדים שרירותיים של מפתח/ערך לדוחות הקריסה, ואז להשתמש במפתחות בהתאמה אישית כדי לחפש ולסנן דוחות קריסה במרכז הבקרה של DevOps & Engagement > Crashlytics במסוף Firebase.
במרכז הבקרה, אתם יכולים לחפש בעיות שתואמות למפתח בהתאמה אישית.
כשבודקים בעיה ספציפית בלוח הבקרה, אפשר לראות את המפתחות המותאמים אישית שמשויכים לכל אירוע (בכרטיסיית המשנה מפתחות) ואפילו לסנן את האירועים לפי מפתחות מותאמים אישית (בתפריט סינון שבחלק העליון של הדף).
משתמשים ב-method של המכונה setCustomKey כדי להגדיר צמדי מפתח/ערך. הנה כמה דוגמאות:
// Set a key to a string.
FirebaseCrashlytics.instance.setCustomKey('str_key', 'hello');
// Set a key to a boolean.
FirebaseCrashlytics.instance.setCustomKey("bool_key", true);
// Set a key to an int.
FirebaseCrashlytics.instance.setCustomKey("int_key", 1);
// Set a key to a long.
FirebaseCrashlytics.instance.setCustomKey("int_key", 1L);
// Set a key to a float.
FirebaseCrashlytics.instance.setCustomKey("float_key", 1.0f);
// Set a key to a double.
FirebaseCrashlytics.instance.setCustomKey("double_key", 1.0);
הוספת הודעות מותאמות אישית ביומן
כדי לקבל הקשר נוסף לאירועים שמובילים לקריסה, אתם יכולים להוסיף לאפליקציה יומני Crashlytics בהתאמה אישית. מערכת Crashlytics משייכת את היומנים לנתוני הקריסה ומציגה אותם בכרטיסייה יומנים כשאתם צופים בפרטי הבעיה (כל הבעיות מוצגות במרכז הבקרה של DevOps ומעורבות המשתמשים > Crashlytics במסוף Firebase).
אפשר להשתמש ב-log כדי לזהות בעיות. לדוגמה:
FirebaseCrashlytics.instance.log("Higgs-Boson detected! Bailing out");
הגדרת מזהי משתמשים
כדי לאבחן בעיה, בדרך כלל כדאי לדעת אצל אילו משתמשים התרחשה קריסה מסוימת. Crashlytics כולל דרך לזהות משתמשים באופן אנונימי בדוחות הקריסה.
כדי להוסיף מזהי משתמשים לדוחות, צריך להקצות לכל משתמש מזהה ייחודי בצורת מספר מזהה, אסימון או ערך גיבוב (hash):
FirebaseCrashlytics.instance.setUserIdentifier("12345");
אם תצטרכו למחוק מזהה משתמש אחרי שהגדרתם אותו, אפסו את הערך למחרוזת ריקה. ניקוי של מזהה משתמש לא מסיר רשומות Crashlytics קיימות. אם אתם צריכים למחוק רשומות שמשויכות למזהה משתמש, פנו לתמיכה של Firebase.
קבלת יומני פעולות משתמש
יומני פעולות המשתמש עוזרים לכם להבין טוב יותר את האינטראקציות של המשתמש עם האפליקציה לפני קריסה, אירוע לא קריטי או אירוע ANR. היומנים האלה יכולים לעזור לכם לשחזר בעיה ולנפות באגים.
יומני פעולות המשתמש מופעלים על ידי Google Analytics, אז כדי לקבל אותם צריך להפעיל את Google Analytics בפרויקט Firebase ולהוסיף לאפליקציה את Firebase SDK ל-Google Analytics. אחרי שעומדים בדרישות האלה, יומני פעולות המשתמש נכללים באופן אוטומטי בנתוני האירוע בכרטיסייה יומנים כשמציגים את פרטי הבעיה (אפשר לראות את כל הבעיות במרכז הבקרה DevOps והתעניינות > Crashlytics במסוף Firebase).
ערכת ה-SDK של Analytics מתעדת באופן אוטומטי את האירוע screen_view, וכך יומני הפעולות של המשתמשים יכולים להציג רשימה של המסכים שהמשתמשים צפו בהם לפני האירוע של הקריסה, השגיאה הלא חמורה או ה-ANR. יומן פעולות משתמש של screen_view מכיל פרמטר firebase_screen_class.
יומני פעולות המשתמש מאוכלסים גם באירועים מותאמים אישית שאתם מתעדים באופן ידני בסשן של המשתמש, כולל נתוני הפרמטרים של האירוע. הנתונים האלה יכולים להראות סדרה של פעולות משתמש שהובילו לקריסה, לאירוע לא קריטי או לאירוע ANR.
חשוב לזכור שאתם יכולים לשלוט באיסוף הנתונים של Google Analytics ובשימוש בהם, כולל הנתונים שמאכלסים את יומני פעולות המשתמש.
הפעלת דיווח על הבעת הסכמה
כברירת מחדל, Crashlytics אוסף באופן אוטומטי דוחות קריסה מכל משתמשי האפליקציה. כדי לתת למשתמשים יותר שליטה על הנתונים שהם שולחים, אתם יכולים להפעיל דיווח בהבעת הסכמה. לשם כך, צריך להשבית את הדיווח האוטומטי ולשלוח נתונים אל Crashlytics רק כשאתם בוחרים לעשות זאת בקוד.
כדי להשבית את האיסוף האוטומטי באופן מקורי:
פלטפורמות של אפל
מוסיפים מפתח חדש לקובץ
Info.plist:- מפתח:
FirebaseCrashlyticsCollectionEnabled - ערך:
false
Android
בבלוק
applicationשל הקובץAndroidManifest.xml, מוסיפים תגmeta-dataכדי להשבית את האיסוף האוטומטי:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />- מפתח:
כדי להפעיל את האיסוף עבור משתמשים נבחרים, צריך להפעיל את שינוי ברירת המחדל של איסוף הנתונים של Crashlytics בזמן הריצה. ערך ההחלפה נשמר בכל ההפעלות הבאות של האפליקציה, כך ש-Crashlytics יכול לאסוף דוחות באופן אוטומטי עבור אותו משתמש.
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);אם המשתמש יבטל בהמשך את ההסכמה לאיסוף נתונים, תוכלו להעביר את הערך
falseבתור ערך ההחרגה. הערך הזה יחול בפעם הבאה שהמשתמש יפעיל את האפליקציה, ויישאר בתוקף בכל ההפעלות הבאות של האפליקציה על ידי המשתמש הזה.
ניהול הנתונים של Crash Insights
התכונה "תובנות לגבי קריסות" עוזרת לפתור בעיות על ידי השוואה בין דוחות הקריסות האנונימיים שלכם לבין דוחות של אפליקציות Firebase אחרות, ומאפשרת לכם לדעת אם הבעיה שלכם היא חלק ממגמה רחבה יותר. במקרים רבים, התובנות לגבי קריסות כוללות גם מקורות מידע שיעזרו לכם לנפות באגים בקריסה.
התכונה "תובנות לגבי קריסות" משתמשת בנתוני קריסות נצברים כדי לזהות מגמות נפוצות שקשורות ליציבות. אם אתם מעדיפים לא לשתף את נתוני האפליקציה, אתם יכולים לבטל את ההצטרפות לתובנות לגבי קריסות בתפריט תובנות לגבי קריסות שבחלק העליון של רשימת הבעיות בלוח הבקרה DevOps ומעורבות > Crashlytics במסוף Firebase.
השלבים הבאים
- ייצוא הנתונים אל BigQuery או אל Cloud Logging לניתוח מתקדם ושימוש בתכונות כמו שאילתות על הנתונים, יצירת מרכזי בקרה בהתאמה אישית והגדרת התראות בהתאמה אישית.