Check out what’s new from Firebase at Google I/O 2022. Learn more

Tùy chỉnh báo cáo sự cố Firebase Crashlytics của bạn

Hướng dẫn này mô tả cách tùy chỉnh báo cáo sự cố của bạn bằng SDK Firebase Crashlytics. Theo mặc định, Crashlytics tự động thu thập báo cáo sự cố cho tất cả người dùng ứng dụng của bạn (thay vào đó, bạn có thể tắt báo cáo sự cố tự động và bật báo cáo chọn tham gia cho người dùng của mình). Crashlytics cung cấp bốn cơ chế ghi nhật ký: khóa tùy chỉnh, nhật ký tùy chỉnh , số nhận dạng người dùngcác trường hợp ngoại lệ đã bắt .

Thêm khóa tùy chỉnh

Các khóa tùy chỉnh giúp bạn có được trạng thái cụ thể của ứng dụng dẫn đến sự cố. Bạn có thể liên kết các cặp khóa / giá trị tùy ý với báo cáo sự cố của mình, sau đó sử dụng các khóa tùy chỉnh để tìm kiếm và lọc báo cáo sự cố trong bảng điều khiển Firebase.

  • Trong trang tổng quan Crashlytics , bạn có thể tìm kiếm các vấn đề khớp với khóa tùy chỉnh.

  • Khi bạn đang xem xét một vấn đề cụ thể trong bảng điều khiển, bạn có thể xem các phím tùy chỉnh được liên kết cho từng sự kiện (tab phụ Phím ) và thậm chí lọc các sự kiện theo các phím tùy chỉnh (menu Bộ lọc ở đầu trang).

Sử dụng phương thức cá thể setCustomKey để đặt các cặp khóa / giá trị. Lưu ý rằng setCustomKey được nạp chồng cho tham số value để chấp nhận bất kỳ đối số nguyên thủy hoặc String nào. Dưới đây là một số ví dụ:

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
}

Bạn cũng có thể sửa đổi giá trị của khóa hiện có bằng cách gọi khóa và đặt nó thành một giá trị khác. Ví dụ:

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

Thêm hàng loạt cặp khóa / giá trị bằng cách chuyển một bản sao của CustomKeysAndValues ​​vào phương thức bản 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

Đối với Kotlin, chức năng hiện có đơn giản hơn so với việc sử dụng trình 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)
}

Thêm thông báo nhật ký tùy chỉnh

Để có thêm ngữ cảnh cho các sự kiện dẫn đến sự cố, bạn có thể thêm nhật ký Crashlytics tùy chỉnh vào ứng dụng của mình. Crashlytics liên kết các nhật ký với dữ liệu sự cố của bạn và hiển thị chúng trong trang Crashlytics của bảng điều khiển Firebase , trong tab Nhật ký .

Sử dụng log để giúp xác định các vấn đề. Ví dụ:

Java

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

Kotlin+KTX

Firebase.crashlytics.log("message")

Đặt số nhận dạng người dùng

Để chẩn đoán sự cố, thường hữu ích khi biết người dùng nào của bạn gặp phải sự cố nhất định. Crashlytics bao gồm một cách để xác định ẩn danh người dùng trong báo cáo sự cố của bạn.

Để thêm ID người dùng vào báo cáo của bạn, hãy chỉ định cho mỗi người dùng một giá trị nhận dạng duy nhất ở dạng số ID, mã thông báo hoặc giá trị băm:

Java

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

Kotlin+KTX

Firebase.crashlytics.setUserId("user123456789")

Nếu bạn cần xóa số nhận dạng người dùng sau khi đặt, hãy đặt lại giá trị thành chuỗi trống. Xóa số nhận dạng người dùng không xóa các bản ghi Crashlytics hiện có. Nếu bạn cần xóa các bản ghi được liên kết với ID người dùng, hãy liên hệ với bộ phận hỗ trợ của Firebase .

(Chỉ Android NDK) Thêm siêu dữ liệu vào báo cáo sự cố NDK

Bạn có thể tùy chọn bao gồm tiêu đề crashlytics.h trong mã C ++ của mình để thêm siêu dữ liệu vào báo cáo sự cố NDK, chẳng hạn như khóa tùy chỉnh, nhật ký tùy chỉnh , mã định danh người dùng . Tất cả các tùy chọn này được mô tả trên trang này ở trên.

crashlytics.h có sẵn dưới dạng thư viện C ++ chỉ có tiêu đề trong Kho lưu trữ GitHub SDK Android của Firebase .

Đọc các nhận xét trong tệp tiêu đề để biết hướng dẫn về cách sử dụng các API NDK C ++.

Báo cáo các trường hợp ngoại lệ không gây tử vong

Ngoài việc tự động báo cáo sự cố ứng dụng của bạn, Crashlytics cho phép bạn ghi lại các trường hợp ngoại lệ không nghiêm trọng và gửi chúng cho bạn vào lần tiếp theo ứng dụng của bạn khởi chạy.

Sử dụng phương thức recordException để ghi lại các ngoại lệ không nghiêm trọng trong các khối catch ứng dụng của bạn. Ví dụ:

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
}

Tất cả các trường hợp ngoại lệ đã ghi đều xuất hiện dưới dạng sự cố không nghiêm trọng trong bảng điều khiển Firebase. Bản tóm tắt sự cố chứa tất cả thông tin trạng thái mà bạn thường nhận được từ các sự cố, cùng với các sự cố theo phiên bản Android và thiết bị phần cứng.

Crashlytics xử lý các ngoại lệ trên một chuỗi nền chuyên dụng để giảm thiểu tác động đến hiệu suất đối với ứng dụng của bạn. Để giảm lưu lượng truy cập mạng của người dùng, Crashlytics đã ghi nhật ký các trường hợp ngoại lệ cùng nhau và gửi chúng vào lần tiếp theo khi ứng dụng khởi chạy.

Bật báo cáo chọn tham gia

Theo mặc định, Crashlytics tự động thu thập báo cáo sự cố cho tất cả người dùng ứng dụng của bạn. Để cung cấp cho người dùng nhiều quyền kiểm soát hơn đối với dữ liệu họ gửi, bạn có thể bật tính năng báo cáo chọn tham gia bằng cách tắt báo cáo tự động và chỉ gửi dữ liệu đến Crashlytics khi bạn chọn trong mã của mình:

  1. Trong khối application của tệp AndroidManifest.xml , hãy thêm thẻ meta-data để tắt tính năng thu thập tự động:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. Bật thu thập cho những người dùng được chọn bằng cách gọi ghi đè thu thập dữ liệu Crashlytics trong thời gian chạy. Giá trị ghi đè vẫn tồn tại qua các lần khởi chạy ứng dụng của bạn nên Crashlytics có thể tự động thu thập báo cáo. Để chọn không tham gia báo cáo sự cố tự động, hãy chuyển false làm giá trị ghi đè. Khi được đặt thành false , giá trị mới sẽ không áp dụng cho đến lần chạy ứng dụng tiếp theo.

    Java

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

    Kotlin+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

Quản lý dữ liệu Crash Insights

Crash Insights giúp bạn giải quyết các vấn đề bằng cách so sánh các dấu vết ngăn xếp ẩn danh của bạn với các dấu vết từ các ứng dụng Firebase khác và cho bạn biết liệu sự cố của bạn có phải là một phần của xu hướng lớn hơn hay không. Đối với nhiều vấn đề, Crash Insights thậm chí còn cung cấp tài nguyên để giúp bạn gỡ lỗi.

Crash Insights sử dụng dữ liệu sự cố tổng hợp để xác định các xu hướng ổn định phổ biến. Nếu không muốn chia sẻ dữ liệu ứng dụng của mình, bạn có thể chọn không tham gia Crash Insights từ menu Crash Insights ở đầu danh sách sự cố Crashlytics trong bảng điều khiển Firebase .