ปรับแต่งรายงานข้อขัดข้องสำหรับ Unity

เลือกแพลตฟอร์ม iOS+ Android Flutter Unity


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

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

รายงานข้อยกเว้นที่ตรวจพบ

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

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

Crashlytics.LogException(Exception ex);

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

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

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

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

ในแดชบอร์ด DevOps และการมีส่วนร่วม > Crashlytics ของคอนโซล Firebase คุณสามารถดำเนินการต่อไปนี้กับข้อมูลนี้ได้

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

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

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

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

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

  • คุณสามารถค้นหาปัญหาที่ตรงกับคีย์ที่กำหนดเองได้

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

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

Crashlytics.SetCustomKey(string key, string value);

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

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

Crashlytics.Log(string message);

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

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

Crashlytics.SetUserId(string identifier);

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

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

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

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

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

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

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

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

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

Crashlytics.IsCrashlyticsCollectionEnabled = true

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

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

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

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

ขั้นตอนถัดไป

  • ส่งออกข้อมูลไปยัง BigQuery หรือ Cloud Logging เพื่อใช้การวิเคราะห์และฟีเจอร์ขั้นสูง เช่น การค้นหาข้อมูล การสร้างแดชบอร์ดที่กำหนดเอง และการตั้งค่าการแจ้งเตือนที่กำหนดเอง