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

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

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

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

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

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

ใช้วิธีอินสแตนซ์ 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 */);

Kotlin+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");

Kotlin+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);

Kotlin+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");

Kotlin+KTX

Firebase.crashlytics.log("message")

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

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

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

Java

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

Kotlin+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
}

Kotlin+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);

    Kotlin+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

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

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

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