Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

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

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

ตัวยึดตำแหน่ง 90

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

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

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

ใช้เมธอด setCustomValue เพื่อตั้งค่าคู่คีย์/ค่า ตัวอย่างเช่น:

สวิฟต์

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

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

วัตถุประสงค์-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"];

คุณยังสามารถแก้ไขค่าของคีย์ที่มีอยู่ได้โดยการเรียกคีย์และตั้งค่าเป็นค่าอื่น ตัวอย่างเช่น:

สวิฟต์

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

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

วัตถุประสงค์-C

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

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

เพิ่มคู่คีย์/ค่าจำนวนมากโดยใช้เมธอด setCustomKeysAndValues ​​โดยมี NSDictionary เป็นพารามิเตอร์เดียว:

สวิฟต์

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)

วัตถุประสงค์-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 ใต้แท็บ บันทึก

สวิฟต์

ใช้ 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

วัตถุประสงค์-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

ตั้งค่าตัวระบุผู้ใช้

ตัวยึดตำแหน่ง 101

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

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

สวิฟต์

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

วัตถุประสงค์-C

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

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

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

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

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

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

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

    สวิฟต์

    Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)

    วัตถุประสงค์-C

    [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];

จัดการข้อมูลเชิงลึกข้อขัดข้อง

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

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