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

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


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

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

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

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

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

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

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

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

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

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

Crashlytics.SetCustomKey(string key, string value);

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

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

Crashlytics
Crashlytics.Log(string message);

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

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

Crashlytics.SetUserId(string identifier);

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

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

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

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

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

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

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

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

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

Crashlytics.IsCrashlyticsCollectionEnabled = true

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

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

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

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

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

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