התאמה אישית של דוחות הקריסה ב-Firebase Crashlytics


בלוח הבקרה של Crashlytics תוכלו ללחוץ על בעיה ולקבל דוח מפורט על האירוע. אתם יכולים להתאים אישית את הדוחות האלה כדי לעזור לכם להבין טוב יותר מה קורה באפליקציה ואת הנסיבות של האירועים שדווחו ל-Crashlytics.

  • לקבל באופן אוטומטי יומני נתיב ניווט אם האפליקציה שלכם משתמשת ב-Firebase SDK ל-Google Analytics. היומנים האלה מאפשרים לכם לראות את הפעולות של המשתמשים שהובילו לאירוע שנאסף על ידי Crashlytics באפליקציה.

  • להשבית את דיווח הקריסה האוטומטי ולהפעיל דיווח על הבעת הסכמה למשתמשים. שימו לב שכברירת מחדל, Crashlytics אוסף דוחות קריסה באופן אוטומטי לכל משתמשי האפליקציה.

הוספת מקשים בהתאמה אישית

מפתחות בהתאמה אישית עוזרים לכם לקבל את המצב הספציפי של האפליקציה לפני קריסת האפליקציה. אתם יכולים לשייך צמדי מפתח/ערך שרירותיים לדוחות הקריסה, ואז להשתמש במפתחות המותאמים אישית כדי לחפש ולסנן דוחות קריסה במסוף Firebase.

  • במרכז הבקרה Crashlytics אפשר לחפש בעיות שתואמות למפתח מותאם אישית.
  • כשבודקים בעיה ספציפית במסוף, אפשר לראות את המפתחות המותאמים אישית המשויכים לכל אירוע (כרטיסיית המשנה Keys) ואפילו לסנן את האירועים לפי מפתחות מותאמים אישית (תפריט Filter בחלק העליון של הדף).

משתמשים ב-method‏ setCustomValue כדי להגדיר צמדי מפתח/ערך. לדוגמה:

Swift

// Set int_key to 100.
Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")

// Set str_key to "hello".
Crashlytics.crashlytics().setCustomValue("hello", forKey: "str_key")

Objective-C

כשמגדירים מספרים שלמים, בוליאניים או ערכים שלמים עשרוניים, מסמנים את הערך בקופסה כ-@(value).

// Set int_key to 100.
[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"];

// Set str_key to "hello".
[[FIRCrashlytics crashlytics] setCustomValue:@"hello" forKey:@"str_key"];

אפשר גם לשנות את הערך של מפתח קיים על ידי קריאה למפתח והגדרת ערך אחר. לדוגמה:

Swift

Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")

// Set int_key to 50 from 100.
Crashlytics.crashlytics().setCustomValue(50, forKey: "int_key")

Objective-C

[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"];

// Set int_key to 50 from 100.
[[FIRCrashlytics crashlytics] setCustomValue:@(50) forKey:@"int_key"];

כדי להוסיף צמדי מפתח/ערך בכמות גדולה, משתמשים בשיטה setCustomKeysAndValues עם NSDictionary כפרמטר היחיד:

Swift

let keysAndValues = [
                 "string key" : "string value",
                 "string key 2" : "string value 2",
                 "boolean key" : true,
                 "boolean key 2" : false,
                 "float key" : 1.01,
                 "float key 2" : 2.02
                ] as [String : Any]

Crashlytics.crashlytics().setCustomKeysAndValues(keysAndValues)

Objective-C

NSDictionary *keysAndValues =
    @{@"string key" : @"string value",
      @"string key 2" : @"string value 2",
      @"boolean key" : @(YES),
      @"boolean key 2" : @(NO),
      @"float key" : @(1.01),
      @"float key 2" : @(2.02)};

[[FIRCrashlytics crashlytics] setCustomKeysAndValues: keysAndValues];

הוספת הודעות יומן בהתאמה אישית

כדי לקבל הקשר נוסף לגבי האירועים שהובילו לקריסה, אפשר להוסיף לאפליקציה יומני Crashlytics מותאמים אישית. Crashlytics משייך את היומנים לנתוני הקריסה ומציג אותם בדף Crashlytics במסוף Firebase, בכרטיסייה יומנים.

Swift

אפשר להשתמש ב-log() או ב-log(format:, arguments:) כדי לזהות בעיות. כדי לקבל פלט יומן שימושי עם הודעות, האובייקט שאתם מעבירים ל-log() חייב לעמוד בדרישות של המאפיין CustomStringConvertible. הפונקציה log() מחזירה את מאפיין התיאור שהגדרתם לאובייקט. לדוגמה:

Crashlytics.crashlytics().log("Higgs-Boson detected! Bailing out…, \(attributesDict)")

.log(format:, arguments:) מעצב את הערכים שמוחזרים מהקריאה ל-getVaList(). לדוגמה:

Crashlytics.crashlytics().log(format: "%@, %@", arguments: getVaList(["Higgs-Boson detected! Bailing out…", attributesDict]))

למידע נוסף על השימוש ב-log() או ב-log(format:, arguments:), כדאי לעיין בCrashlytics מאמרי העזרה.

Objective-C

אפשר להשתמש ב-log או ב-logWithFormat כדי לזהות בעיות. חשוב לזכור: כדי לקבל פלט יומן שימושי עם הודעות, האובייקט שאתם מעבירים לשיטה כלשהי צריך לשנות את ברירת המחדל של מאפיין המכונה description. לדוגמה:

[[FIRCrashlytics crashlytics] log:@"Simple string message"];

[[FIRCrashlytics crashlytics] logWithFormat:@"Higgs-Boson detected! Bailing out... %@", attributesDict];

[[FIRCrashlytics crashlytics] logWithFormat:@"Logging a variable argument list %@" arguments:va_list_arg];

למידע נוסף על השימוש ב-log וב-logWithFormat, תוכלו לעיין במסמכי העזרה של Crashlytics.

הגדרת מזהים של משתמשים

כדי לאבחן בעיה, לרוב כדאי לדעת אילו מהמשתמשים נתקלו בקריסה מסוימת. Crashlytics כולל דרך לזהות משתמשים באופן אנונימי בדוחות על קריסות.

כדי להוסיף מזהי משתמשים לדוחות, מקצים לכל משתמש מזהה ייחודי בצורת מספר מזהה, אסימון או ערך גיבוב:

Swift

Crashlytics.crashlytics().setUserID("123456789")

Objective-C

[[FIRCrashlytics crashlytics] setUserID:@"123456789"];

אם תצטרכו למחוק מזהה משתמש אחרי שתגדירו אותו, תוכלו לאפס את הערך למחרוזת ריקה. ניקוי של מזהה משתמש לא מסיר רשומות Crashlytics קיימות. אם אתם צריכים למחוק רשומות שמשויכות למזהה משתמש, פנו לתמיכה של Firebase.

אחזור יומני נתיבי ניווט

יומני נתיבי ניווט עוזרים להבין טוב יותר את האינטראקציות שהיו למשתמש עם האפליקציה שהובילו לקריסה, לאירוע לא קטלני או ל-ANR. היומנים האלה יכולים להיות מועילים כשמנסים לשחזר בעיה ולנפות באגים בה.

יומני נתיב הניווט מופעל על ידי Google Analytics, ולכן כדי לקבל יומני נתיב הניווט, צריך להפעיל את Google Analytics בפרויקט Firebase ולהוסיף את ה-SDK של Firebase ל-Google Analytics לאפליקציה. אחרי שתבצעו את הדרישות האלה, יומני נתיב הניווט ייכללו באופן אוטומטי בנתונים של אירוע בכרטיסייה יומנים כשמציגים את פרטי הבעיה.

ה-SDK Analytics מתעד באופן אוטומטי את האירוע screen_view, וכך מאפשר ביומני המיקום להציג רשימה של מסכים שנצפו לפני הקריסה, האירוע הלא חמור או ה-ANR. יומן של נתיב breadcrumbs מסוג screen_view מכיל פרמטר firebase_screen_class.

יומני נתיבי הניווט מאוכלסים גם בכל אירועים מותאמים אישית שאתם מתעדים באופן ידני במסגרת הסשן של המשתמש, כולל נתוני הפרמטרים של האירוע. הנתונים האלה יכולים לעזור להציג סדרה של פעולות משתמש שהובילו לתאונה, לאירוע ANR או לאירוע לא קטלני.

לתשומת ליבכם: אתם יכולים לשלוט באיסוף ובשימוש בנתוני Google Analytics, כולל הנתונים שמאכלסים את יומני הלחם.

הפעלת דיווח על הסכמה

כברירת מחדל, Crashlytics אוסף באופן אוטומטי דוחות קריסה של כל המשתמשים באפליקציה. כדי לתת למשתמשים שליטה רבה יותר על הנתונים שהם שולחים, אפשר להפעיל דיווח על הסכמה מפורשת על ידי השבתת הדיווח האוטומטי ושליחת נתונים אל Crashlytics רק כשבוחרים בכך בקוד:

  1. כדי להשבית את האיסוף האוטומטי, מוסיפים מפתח חדש לקובץ Info.plist:

    • מקש: FirebaseCrashlyticsCollectionEnabled
    • ערך: false
  2. כדי לאפשר איסוף של משתמשים נבחרים, שולחים קריאה לביטול איסוף הנתונים של Crashlytics בזמן הריצה. ערך ההחרגה נשמר בכל ההפעלות של האפליקציה, כדי ש-Crashlytics יוכל לאסוף דוחות באופן אוטומטי.

    כדי לבטל את ההסכמה לדיווח אוטומטי על קריסות, מעבירים את הערך false כערך לשינוי ברירת המחדל. כשהערך מוגדר ל-false, הערך החדש לא יחול עד להפעלה הבאה של האפליקציה.

    Swift

    Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)

    Objective-C

    [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];

ניהול הנתונים של תובנות לגבי קריסות

התכונה 'תובנות לגבי קריסות' עוזרת לכם לפתור בעיות על ידי השוואה של עקבות ה-stack האנונימיים שלכם לעקבות מאפליקציות אחרות ב-Firebase, ומציינת אם הבעיה היא חלק ממגמה רחבה יותר. לגבי בעיות רבות, התכונה 'תובנות לגבי קריסות' מספקת גם מקורות מידע שיעזרו לכם לנפות את הבאגים שגרמו לקריסה.

התכונה 'תובנות לגבי קריסות' משתמשת בנתוני קריסות שנצברו כדי לזהות מגמות נפוצות ביציבות. אם אתם מעדיפים לא לשתף את נתוני האפליקציה, תוכלו לבטל את ההסכמה לשימוש בתכונה 'תובנות לגבי קריסות' בתפריט תובנות לגבי קריסות בחלק העליון של רשימת הבעיות Crashlytics במסוף Firebase.