ปรับแต่งรายงานข้อขัดข้องของ 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

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

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

บันทึกเบรดครัมบ์ขับเคลื่อนโดย Google Analytics ดังนั้นหากต้องการรับบันทึกเบรดครัมบ์ คุณต้องเปิดใช้ Google Analytics สำหรับโปรเจ็กต์ Firebase และเพิ่ม SDK ของ Firebase สำหรับ 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 รวบรวมรายงานได้โดยอัตโนมัติ

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

    Swift

    Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)

    Objective-C

    [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];

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

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

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