מדריך זה מתאר כיצד להתאים אישית את דוחות הקריסה שלך באמצעות ממשקי API של Crashlytics. כברירת מחדל, Crashlytics אוספת אוטומטית דוחות קריסה מקוריים של הפלטפורמה עבור כל משתמשי האפליקציה שלך (אתה יכול גם לבטל את דיווח הקריסה האוטומטי ולהפעיל דיווח הסכמה עבור המשתמשים שלך במקום זאת). Crashlytics מספקת חמישה מנגנוני רישום מחוץ לקופסה: מפתחות מותאמים אישית , יומנים מותאמים אישית , מזהי משתמש , חריגים שנתפסו וחריגים שלא נתפסו .
עבור אפליקציות Flutter, דוחות קטלניים נשלחים אל Crashlytics בזמן אמת ללא צורך בהפעלת האפליקציה מחדש. דיווחים לא קטלניים נכתבים לדיסק כדי להישלח יחד עם הדוח הקטלני הבא או כשהאפליקציה מופעלת מחדש.
דווח על חריגים שלא נתפסו
אתה יכול לתפוס אוטומטית את כל השגיאות ה"פטאליות" שנזרקות במסגרת Flutter על ידי דריסת 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();
}
...
)
כדי לתפוס שגיאות כאלה, אתה יכול להשתמש במטפל 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 מאפשרת לך לתעד חריגים לא קטלניים ולשלוח אותם אליך בפעם הבאה שמדווח על אירוע קטלני או כשהאפליקציה מופעלת מחדש.
השתמש בשיטת 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'],
);
חריגים אלה מופיעים כבעיות לא קטלניות במסוף Firebase. סיכום הבעיה מכיל את כל מידע המצב שאתה מקבל בדרך כלל מקריסות, יחד עם תקלות לפי גרסה והתקן חומרה.
Crashlytics מעבד חריגים על שרשור רקע ייעודי כדי למזער את השפעת הביצועים על האפליקציה שלך. כדי להפחית את תעבורת הרשת של המשתמשים שלך, Crashlytics תגביל את מספר הדוחות שנשלחו מהמכשיר, במידת הצורך.
הוסף מפתחות מותאמים אישית
מפתחות מותאמים אישית עוזרים לך לקבל את המצב הספציפי של האפליקציה שלך לקראת קריסה. אתה יכול לשייך צמדי מפתח/ערך שרירותיים לדוחות הקריסה שלך, ולאחר מכן להשתמש במפתחות המותאמים אישית כדי לחפש ולסנן דוחות קריסה במסוף Firebase.
בלוח המחוונים של Crashlytics , תוכל לחפש בעיות התואמות למפתח מותאם אישית.
כאשר אתה בודק בעיה ספציפית במסוף, אתה יכול להציג את המפתחות המותאמים אישית המשויכים לכל אירוע (כרטיסיית המשנה Keys ) ואפילו לסנן את האירועים לפי מפתחות מותאמים אישית (תפריט סינון בראש העמוד).
השתמש בשיטת המופע 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 משייך את היומנים לנתוני הקריסה שלך ומציג אותם במסוף Firebase , בכרטיסייה Crashlytics Logs .
השתמש log
כדי לעזור באיתור בעיות. לדוגמה:
FirebaseCrashlytics.instance.log("Higgs-Boson detected! Bailing out");
הגדר מזהי משתמש
כדי לאבחן בעיה, לעתים קרובות כדאי לדעת מי מהמשתמשים שלך חווה קריסה נתונה. Crashlytics כולל דרך לזהות משתמשים באופן אנונימי בדוחות הקריסה שלך.
כדי להוסיף מזהי משתמש לדוחות שלך, הקצה לכל משתמש מזהה ייחודי בצורה של מספר מזהה, אסימון או ערך גיבוב:
FirebaseCrashlytics.instance.setUserIdentifier("12345");
אם אי פעם תצטרך לנקות מזהה משתמש לאחר הגדרתו, אפס את הערך למחרוזת ריקה. ניקוי מזהה משתמש אינו מסיר רשומות Crashlytics קיימות. אם אתה צריך למחוק רשומות המשויכות למזהה משתמש, פנה לתמיכה של Firebase .
אפשר דיווח על הסכמה
כברירת מחדל, Crashlytics אוספת אוטומטית דוחות קריסה עבור כל משתמשי האפליקציה שלך. כדי לתת למשתמשים שליטה רבה יותר על הנתונים שהם שולחים, תוכל להפעיל דיווח על הסכמה על ידי השבתת הדיווח האוטומטי ושליחת נתונים ל-Crashlytics רק כאשר תבחר בקוד שלך:
כבה את האיסוף האוטומטי באופן מקורי:
פלטפורמות של אפל
הוסף מפתח חדש לקובץ
Info.plist
שלך:- מפתח:
FirebaseCrashlyticsCollectionEnabled
- ערך:
false
דְמוּי אָדָם
בבלוק
application
של קובץAndroidManifest.xml
שלך, הוסף תגmeta-data
כדי לכבות את האיסוף האוטומטי:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
- מפתח:
אפשר איסוף עבור משתמשים נבחרים על ידי קריאה לעקיפה של איסוף הנתונים של Crashlytics בזמן ריצה.
ערך העקיפה נמשך לאורך כל ההשקות של האפליקציה שלך כך ש-Crashlytics יכול לאסוף דוחות באופן אוטומטי. כדי לבטל את הסכמתך לדיווח על קריסה אוטומטי, העבר את
false
כערך העקיפה. כאשר מוגדר כ-false
, הערך החדש אינו חל עד להרצה הבאה של האפליקציה.FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
נהל נתוני Crash Insights
Crash Insights עוזר לך לפתור בעיות על ידי השוואת מעקבי הערימה האנונימיים שלך לעקבות מאפליקציות Firebase אחרות ומודיע לך אם הבעיה שלך היא חלק ממגמה גדולה יותר. עבור בעיות רבות, Crash Insights אפילו מספק משאבים שיעזרו לך לנפות באגים בקריסה.
Crash Insights משתמש בנתוני קריסה מצטברים כדי לזהות מגמות יציבות נפוצות. אם אתה מעדיף לא לשתף את נתוני האפליקציה שלך, תוכל לבטל את הסכמתך ל-Cash Insights מתפריט Crash Insights בראש רשימת הבעיות של Crashlytics במסוף Firebase .