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

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

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

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

รายงานข้อยกเว้น

รายงานการตรวจจับข้อยกเว้น

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

คุณสามารถบันทึกข้อยกเว้นใน C# โดยใช้วิธีการต่อไปนี้:

Crashlytics.LogException(Exception ex);

คุณสามารถบันทึกข้อยกเว้นที่คาดหวังได้ในบล็อก try/catch ของเกม:

try {
    myMethodThatThrows();
} catch (Exception e) {
   Crashlytics.LogException(e);
   // handle your exception here!
}

รายงานข้อยกเว้นที่ไม่ถูกตรวจจับ

สำหรับ ข้อยกเว้นที่ไม่ถูก ตรวจจับซึ่งจะไม่ทำให้เกมของคุณเสียหาย (เช่น ข้อยกเว้น C# ที่ไม่ถูกตรวจจับในตรรกะของเกม) คุณสามารถให้ Crashlytics SDK รายงานเป็น เหตุการณ์ร้ายแรง ได้โดยการตั้งค่าคุณสมบัติ Crashlytics.ReportUncaughtExceptionsAsFatal ให้ true โดยที่คุณ เริ่มต้น Crashlytics ในโปรเจ็กต์ Unity ของคุณ . เหตุการณ์เหล่านี้จะถูกรายงานไปยัง Crashlytics แบบเรียลไทม์โดยไม่จำเป็นต้องให้ผู้ใช้รีสตาร์ทเกม

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

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

void Start() {
    // Since there is no try-block surrounding this call, if an exception is thrown,
    // it is considered unexpected.
    // Setting `Crashlytics.ReportUncaughtExceptionsAsFatal = true`
    // will ensure that such cases are reported as fatals.
    thirdPartyMethodThatMayThrow();
}

รวมรายงาน GWP-ASan เพื่อแก้ปัญหาความเสียหายของหน่วยความจำ

สำหรับแอป Android ที่ใช้ IL2CPP นั้น Crashlytics จะช่วยคุณแก้ไขข้อขัดข้องที่เกิดจากข้อผิดพลาดของหน่วยความจำภายในโดยการรวบรวมรายงาน GWP-ASan ข้อผิดพลาดเกี่ยวกับหน่วยความจำเหล่านี้อาจเชื่อมโยงกับความเสียหายของหน่วยความจำภายในแอปของคุณ ซึ่งเป็นสาเหตุหลักของช่องโหว่ด้านความปลอดภัยของแอป

  • คุณจะดูข้อมูลนี้ได้ในแท็บ "Memory Stack Tracs" ใหม่เมื่อคลิกรายละเอียดของปัญหาใน หน้าแดชบอร์ด Crashlytics

  • คุณยังใช้สัญญาณ "รายงาน GWP-ASan" ใหม่และตัวกรองเพื่อดูปัญหาทั้งหมดเกี่ยวกับข้อมูลนี้ได้อย่างรวดเร็ว

คุณสามารถรับรายงานหน่วยความจำ GWP-ASan ได้หากแอปของคุณใช้ Crashlytics SDK for Unity (v10.7.0+) ล่าสุดและ เปิดใช้งาน GWP-ASan ไว้อย่างชัดเจน (คุณต้อง แก้ไข Android App Manifest ของคุณ ) หากคุณมีโค้ด C++ ในแอป คุณสามารถทดสอบการตั้งค่า GWP-ASan ได้โดยใช้ โค้ดเนทีฟตัวอย่างในเอกสารประกอบของ Android

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

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

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

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

Crashlytics.SetCustomKey(string key, string value);

เพิ่มข้อความบันทึกที่กำหนดเอง

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

Crashlytics.Log(string message);

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

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

Crashlytics.SetUserId(string identifier);

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

บันทึกเบรดครัมบ์ช่วยให้คุณเข้าใจการโต้ตอบที่ผู้ใช้มีกับแอปของคุณได้ดีขึ้น ซึ่งนำไปสู่เหตุการณ์ขัดข้อง เหตุการณ์ที่ไม่ร้ายแรง หรือ 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 สำหรับผู้ใช้ที่เลือกเท่านั้น ให้เรียกการลบล้างการรวบรวมข้อมูล Crashlytics ณ รันไทม์ ค่าแทนที่จะยังคงอยู่ตลอดการเปิดตัวแอปของคุณ ดังนั้น Crashlytics จึงรวบรวมรายงานได้โดยอัตโนมัติ หากต้องการเลือกไม่ใช้การรายงานข้อขัดข้องอัตโนมัติ ให้ส่ง false เป็นค่าแทนที่ เมื่อตั้งค่าเป็น false ค่าใหม่จะไม่มีผลจนกว่าจะมีการเรียกใช้แอปครั้งถัดไป

Crashlytics.IsCrashlyticsCollectionEnabled = true

จัดการข้อมูล Crash Insights

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

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