Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

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

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

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

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

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

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

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

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("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("current_level", 3)
    key("last_UI_action", "logged_in")
}

Java

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

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

เพิ่มคู่คีย์/ค่าเป็นกลุ่มโดยส่งอินสแตนซ์ของ CustomKeysAndValues ​​ไปยังเมธอดอินสแตนซ์ setCustomKeys :

Kotlin+KTX

สำหรับ Kotlin ฟังก์ชันที่มีอยู่นั้นง่ายกว่าการใช้ CustomKeysAndValues ​​builder

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)
}

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

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

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

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

Kotlin+KTX

Firebase.crashlytics.log("message")

Java

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

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

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

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

Kotlin+KTX

Firebase.crashlytics.setUserId("user123456789")

Java

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

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

ตัวยึดตำแหน่ง 99

(Android NDK เท่านั้น) เพิ่มข้อมูลเมตาในรายงานข้อขัดข้องของ NDK

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

crashlytics.h พร้อมใช้งานเป็นไลบรารี C++ เฉพาะส่วนหัวใน Firebase Android SDK GitHub Repository

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

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

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

ใช้เมธอด recordException เพื่อบันทึกข้อยกเว้นที่ไม่ร้ายแรงใน catch block ของแอป ตัวอย่างเช่น:

Kotlin+KTX

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

Java

try {
    methodThatThrows();
} catch (Exception e) {
    FirebaseCrashlytics.getInstance().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 ค่าใหม่จะไม่มีผลจนกว่าจะเรียกใช้แอปครั้งถัดไป

    Kotlin+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

จัดการข้อมูลเชิงลึกข้อขัดข้อง

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

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