Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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

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

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

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

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

ใช้ setCustomKey วิธีการเช่นชุดคีย์ / คู่ค่า โปรดทราบว่า setCustomKey มากเกินไปสำหรับ value พารามิเตอร์ที่จะยอมรับใด ๆ ดั้งเดิมหรือ String อาร์กิวเมนต์ นี่คือตัวอย่างบางส่วน:

Java

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("my_string_key", "foo" /* string value */);

crashlytics.setCustomKey("my_bool_key", true /* boolean value */);

crashlytics.setCustomKey("my_double_key", 1.0 /* double value */);

crashlytics.setCustomKey("my_float_key", 1.0f /* float value */);

crashlytics.setCustomKey("my_int_key", 1 /* int value */);

คอตลิน+KTX

val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("my_string_key", "foo") // String value
    key("my_bool_key", true)    // boolean value
    key("my_double_key", 1.0)   // double value
    key("my_float_key", 1.0f)   // float value
    key("my_int_key", 1)        // int value
}

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

Java

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("current_level", 3);
crashlytics.setCustomKey("last_UI_action", "logged_in");

คอตลิน+KTX

val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("current_level", 3)
    key("last_UI_action", "logged_in")
}

เพิ่มคู่ค่า / สำคัญในกลุ่มโดยผ่านตัวอย่างของ CustomKeysAndValues ไป setCustomKeys วิธีการเช่น:

Java

CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder()
.putString("string key", "string value")
.putString("string key 2", "string  value 2")
.putBoolean("boolean key", True)
.putBoolean("boolean key 2", False)
.putFloat("float key", 1.01)
.putFloat("float key 2", 2.02)
.build();

FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);

คอตลิน+KTX

สำหรับ Kotlin การทำงานที่มีอยู่จะง่ายกว่าการใช้ CustomKeysAndValues สร้าง

crashlytics.setCustomKeys {
  key("str_key", "hello")
  key("bool_key", true)
  key("int_key", 1)
  key("long_key", 1L)
  key("float_key", 1.0f)
  key("double_key", 1.0)
}

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

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

ใช้ log เพื่อช่วยเหลือปัญหาระบุ ตัวอย่างเช่น:

Java

FirebaseCrashlytics.getInstance().log("message");

คอตลิน+KTX

Firebase.crashlytics.log("message")

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

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

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

Java

FirebaseCrashlytics.getInstance().setUserId("user123456789");

คอตลิน+KTX

Firebase.crashlytics.setUserId("user123456789")

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

(Android NDK เท่านั้น) เพิ่มเมตาดาต้าที่จะรายงานความผิดพลาด NDK

คุณสามารถเลือกที่จะรวม crashlytics.h ส่วนหัวของคุณใน C ++ รหัสเพื่อเพิ่มเมตาดาต้าที่จะรายงานความผิดพลาด NDK เช่น ปุ่มที่กำหนดเอง , บันทึกที่กำหนดเอง , ตัวระบุผู้ใช้ ตัวเลือกทั้งหมดนี้มีอธิบายไว้ในหน้านี้ด้านบน

crashlytics.h สามารถใช้ได้เป็นส่วนหัวเท่านั้นไลบรารี c ++ ใน Firebase Android SDK GitHub Repository

อ่านความคิดเห็นในไฟล์ส่วนหัวเพื่อดูคำแนะนำในการใช้ NDK C++ API

รายงานข้อยกเว้นที่ไม่ร้ายแรง

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

ใช้ recordException วิธีการบันทึกข้อยกเว้นที่ไม่ร้ายแรงในแอปของคุณ catch บล็อก ตัวอย่างเช่น:

Java

try {
    methodThatThrows();
} catch (Exception e) {
    FirebaseCrashlytics.getInstance().recordException(e);
    // handle your exception here
}

คอตลิน+KTX

try {
    methodThatThrows()
} catch (e: Exception) {
    Firebase.crashlytics.recordException(e)
    // handle your exception here
}

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

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

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

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

  1. ใน application บล็อกของคุณ AndroidManifest.xml ไฟล์เพิ่ม meta-data แท็กจะปิดคอลเลกชันอัตโนมัติ:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. เปิดใช้งานการรวบรวมสำหรับผู้ใช้ที่เลือกโดยเรียกใช้การแทนที่การรวบรวมข้อมูล Crashlytics ณ รันไทม์ ค่าการแทนที่จะคงอยู่ตลอดการเปิดตัวแอปของคุณ ดังนั้น Crashlytics จึงสามารถรวบรวมรายงานได้โดยอัตโนมัติ การยกเลิกการรายงานความผิดพลาดโดยอัตโนมัติผ่าน false เป็นค่าแทนที่ เมื่อตั้งค่าเป็น false , ค่าใหม่ใช้ไม่ได้จนกว่าระยะต่อไปของแอป

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

    คอตลิน+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

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

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

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