ปรับแต่งรายงานข้อขัดข้องของ Firebase Crashlytics


ในCrashlyticsแดชบอร์ด คุณสามารถคลิกปัญหาเพื่อดูรายงานเหตุการณ์โดยละเอียด ได้ คุณปรับแต่งรายงานเหล่านั้นเพื่อช่วยให้เข้าใจได้ดีขึ้นว่า เกิดอะไรขึ้นในแอปและสถานการณ์รอบๆ เหตุการณ์ที่รายงานไปยัง Crashlytics

  • รับบันทึกเส้นทางโดยอัตโนมัติหากแอปใช้ Firebase SDK สำหรับ Google Analytics บันทึกเหล่านี้ช่วยให้คุณเห็นการกระทําของผู้ใช้ที่นําไปสู่เหตุการณ์ที่รวบรวมโดย Crashlytics ในแอป

  • ปิดการรายงานข้อขัดข้องอัตโนมัติและเปิดใช้การรายงานแบบเลือกเข้าร่วมสำหรับผู้ใช้ โปรดทราบว่าโดยค่าเริ่มต้น Crashlytics จะรวบรวมรายงานข้อขัดข้องสำหรับผู้ใช้แอปทั้งหมดโดยอัตโนมัติ

เพิ่มคีย์ที่กำหนดเอง

คีย์ที่กำหนดเองช่วยให้คุณทราบสถานะที่เฉพาะเจาะจงของแอปก่อนที่จะเกิดข้อขัดข้อง คุณเชื่อมโยงคู่คีย์/ค่าที่กำหนดเองกับรายงานข้อขัดข้องได้ จากนั้นใช้ คีย์ที่กำหนดเองเพื่อค้นหาและกรองรายงานข้อขัดข้องในFirebaseคอนโซล

  • ในแดชบอร์ด Crashlytics คุณสามารถค้นหาปัญหา ที่ตรงกับคีย์ที่กำหนดเองได้
  • เมื่อตรวจสอบปัญหาที่เฉพาะเจาะจงในคอนโซล คุณจะดูคีย์ที่กำหนดเองที่เชื่อมโยงสำหรับแต่ละเหตุการณ์ (แท็บย่อยคีย์) และกรองเหตุการณ์ตามคีย์ที่กำหนดเองได้ (เมนูตัวกรองที่ด้านบนของหน้า)

ใช้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 มีวิธีระบุผู้ใช้แบบไม่ระบุตัวตนในรายงานข้อขัดข้อง

หากต้องการเพิ่ม User-ID ลงในรายงาน ให้กำหนดตัวระบุที่ไม่ซ้ำกันให้ผู้ใช้แต่ละรายใน รูปแบบของหมายเลขรหัส โทเค็น หรือค่าที่แฮช

Swift

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

Objective-C

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

หากต้องการล้างตัวระบุผู้ใช้หลังจากตั้งค่าแล้ว ให้รีเซ็ตค่าเป็น สตริงว่าง การล้างตัวระบุผู้ใช้จะไม่นำระเบียนที่มีอยู่ Crashlyticsออก หากต้องการลบระเบียนที่เชื่อมโยงกับรหัสผู้ใช้ โปรดติดต่อทีมสนับสนุนของ Firebase

รับบันทึกเบรดครัมบ์

บันทึก Breadcrumb ช่วยให้คุณเข้าใจการโต้ตอบที่ผู้ใช้ มีกับแอปของคุณก่อนที่จะเกิดข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง หรือเหตุการณ์ ANR ได้ดียิ่งขึ้น บันทึกเหล่านี้อาจ มีประโยชน์เมื่อพยายามจำลองและแก้ไขข้อบกพร่องของปัญหา

บันทึกเส้นทางของผู้ใช้ขับเคลื่อนโดย Google Analytics ดังนั้นหากต้องการรับบันทึกเส้นทางของผู้ใช้ คุณจะต้อง เปิดใช้ Google Analytics สําหรับโปรเจ็กต์ Firebase และ เพิ่ม Firebase SDK สําหรับ Google Analytics ลงในแอป เมื่อเป็นไปตามข้อกําหนดเหล่านี้แล้ว ระบบจะรวมบันทึกเส้นทางของผู้ใช้ไว้กับข้อมูลของเหตุการณ์โดยอัตโนมัติภายในแท็บบันทึกเมื่อคุณดูรายละเอียดของปัญหา

Analytics SDK จะบันทึกscreen_viewเหตุการณ์โดยอัตโนมัติ ซึ่งช่วยให้บันทึกเส้นทางของผู้ใช้แสดงรายการหน้าจอที่ดู ก่อนเกิดข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง หรือเหตุการณ์ ANR ได้ screen_view บันทึกเส้นทางมีพารามิเตอร์ firebase_screen_class

นอกจากนี้ ระบบยังจะสร้างบันทึกเส้นทางของผู้ใช้ด้วยเหตุการณ์ที่กำหนดเองที่คุณบันทึกด้วยตนเองภายในเซสชันของผู้ใช้ รวมถึงข้อมูลพารามิเตอร์ของเหตุการณ์ ข้อมูลนี้ช่วยแสดงลําดับการกระทําของผู้ใช้ที่นําไปสู่เหตุการณ์ข้อขัดข้อง เหตุการณ์ที่ไม่ร้ายแรง หรือเหตุการณ์ ANR ได้

โปรดทราบว่าคุณสามารถ ควบคุมการเก็บรวบรวมและการใช้ข้อมูล Google Analytics ซึ่งรวมถึงข้อมูลที่สร้างบันทึกเส้นทาง

เปิดใช้การรายงานการเลือกใช้

โดยค่าเริ่มต้น Crashlytics จะรวบรวมรายงานข้อขัดข้องของผู้ใช้แอปทั้งหมดโดยอัตโนมัติ หากต้องการให้ผู้ใช้ควบคุมข้อมูลที่ส่งได้มากขึ้น คุณสามารถเปิดใช้ การรายงานแบบเลือกใช้ได้โดยการปิดใช้การรายงานอัตโนมัติและส่งข้อมูลไปยัง Crashlytics เมื่อคุณเลือกในโค้ด

  1. ปิดการรวบรวมอัตโนมัติโดยเพิ่มคีย์ใหม่ลงในไฟล์ Info.plist ดังนี้

    • แป้น: FirebaseCrashlyticsCollectionEnabled
    • ค่า: false
  2. เปิดใช้การเก็บรวบรวมข้อมูลสำหรับผู้ใช้บางรายโดยเรียกใช้Crashlyticsการลบล้างการเก็บรวบรวมข้อมูล ที่รันไทม์ ค่าการลบล้างจะยังคงอยู่ในการเปิดตัวแอปครั้งต่อๆ ไปทั้งหมด เพื่อให้ Crashlytics รวบรวมรายงานสำหรับผู้ใช้รายนั้นได้โดยอัตโนมัติ

    Swift

    Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)

    Objective-C

    [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];

    หากผู้ใช้เลือกไม่ใช้การเก็บรวบรวมข้อมูลในภายหลัง คุณสามารถส่ง false เป็นค่าลบล้าง ซึ่งจะมีผลในครั้งถัดไปที่ผู้ใช้เปิดแอป และจะยังคงอยู่ในการเปิดแอปครั้งต่อๆ ไปทั้งหมดสำหรับผู้ใช้รายนั้น

จัดการข้อมูลข้อมูลเชิงลึกเกี่ยวกับการขัดข้อง

ข้อมูลเชิงลึกเกี่ยวกับข้อขัดข้องช่วยให้คุณแก้ปัญหาได้โดยการเปรียบเทียบสแต็กเทรซที่ลบข้อมูลระบุตัวบุคคลของคุณกับเทรซจากแอป Firebase อื่นๆ และแจ้งให้คุณทราบว่าปัญหาของคุณเป็นส่วนหนึ่งของแนวโน้มที่ใหญ่ขึ้นหรือไม่ สำหรับปัญหาหลายอย่าง ข้อมูลเชิงลึกเกี่ยวกับข้อขัดข้องยังมีแหล่งข้อมูล ที่จะช่วยคุณแก้ไขข้อบกพร่องของข้อขัดข้องด้วย

ข้อมูลเชิงลึกเกี่ยวกับข้อขัดข้องใช้ข้อมูลข้อขัดข้องที่รวบรวมมาเพื่อระบุแนวโน้มความเสถียรทั่วไป หากไม่ต้องการแชร์ข้อมูลของแอป คุณสามารถเลือกไม่ใช้ข้อมูลเชิงลึกเกี่ยวกับข้อขัดข้องได้จากเมนูข้อมูลเชิงลึกเกี่ยวกับข้อขัดข้องที่ด้านบนของCrashlyticsรายการปัญหา ในFirebaseคอนโซล