Menyesuaikan laporan error Firebase Crashlytics

Panduan ini menjelaskan cara menyesuaikan laporan error menggunakan Firebase Crashlytics SDK. Secara default, Crashlytics mengumpulkan laporan error secara otomatis untuk semua pengguna aplikasi Anda (Anda dapat menonaktifkan pelaporan error otomatis dan mengaktifkan pelaporan keikutsertaan untuk pengguna Anda). Crashlytics menyediakan empat mekanisme logging siap pakai: kunci kustom, log kustom, ID pengguna, dan pengecualian yang tertangkap.

Menambahkan kunci kustom

Kunci kustom membantu Anda mendapatkan status tertentu aplikasi menjelang error. Anda dapat mengaitkan key-value pair apa pun dengan laporan error, lalu menggunakan kunci kustom untuk menelusuri dan memfilter laporan error di Firebase console.

  • Di dasbor Crashlytics, Anda dapat mencari masalah yang cocok dengan kunci kustom.
  • Saat meninjau masalah tertentu di console, Anda dapat melihat kunci kustom yang dikaitkan untuk setiap peristiwa (subtab Keys) dan bahkan memfilter peristiwa berdasarkan kunci kustom (menu Filter di bagian atas halaman).

Gunakan metode setCustomValue untuk menetapkan key-value pair. Contoh:

Swift

// Set int_key to 100.
Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")

// Set str_key to "hello".
Crashlytics.crashlytics().setCustomValue("hello", forKey: "str_key")

Objective-C

Saat menetapkan bilangan bulat, boolean, atau float, kotakkan nilai sebagai @(value).

// Set int_key to 100.
[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"];

// Set str_key to "hello".
[[FIRCrashlytics crashlytics] setCustomValue:@"hello" forKey:@"str_key"];

Anda juga dapat mengubah nilai kunci yang ada dengan memanggil kunci tersebut dan menetapkannya ke nilai yang berbeda. Contoh:

Swift

Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")

// Set int_key to 50 from 100.
Crashlytics.crashlytics().setCustomValue(50, forKey: "int_key")

Objective-C

[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"];

// Set int_key to 50 from 100.
[[FIRCrashlytics crashlytics] setCustomValue:@(50) forKey:@"int_key"];

Tambahkan key-value pair sekaligus menggunakan metode setCustomKeysAndValues dengan NSDictionary sebagai satu-satunya parameter:

Swift

let keysAndValues = [
                 "string key" : "string value",
                 "string key 2" : "string value 2",
                 "boolean key" : true,
                 "boolean key 2" : false,
                 "float key" : 1.01,
                 "float key 2" : 2.02
                ] as [String : Any]

Crashlytics.crashlytics().setCustomKeysAndValues(keysAndValues)

Objective-C

NSDictionary *keysAndValues =
    @{@"string key" : @"string value",
      @"string key 2" : @"string value 2",
      @"boolean key" : @(YES),
      @"boolean key 2" : @(NO),
      @"float key" : @(1.01),
      @"float key 2" : @(2.02)};

[[FIRCrashlytics crashlytics] setCustomKeysAndValues: keysAndValues];

Menambahkan pesan log kustom

Untuk memberikan lebih banyak konteks mengenai peristiwa menjelang error, Anda dapat menambahkan log Crashlytics kustom ke aplikasi. Crashlytics mengaitkan log dengan data error dan menampilkannya di halaman Crashlytics di Firebase console, pada tab Logs.

Swift

Gunakan log() atau log(format:, arguments:) untuk membantu menentukan masalah. Jika Anda ingin mendapatkan output log yang berguna dengan pesan, objek yang Anda teruskan ke log() harus sesuai dengan properti CustomStringConvertible. log() menampilkan properti deskripsi yang Anda tentukan untuk objek. Contoh:

Crashlytics.crashlytics().log("Higgs-Boson detected! Bailing out…, \(attributesDict)")

.log(format:, arguments:) memformat nilai yang ditampilkan setelah memanggil getVaList(). Contoh:

Crashlytics.crashlytics().log(format: "%@, %@", arguments: getVaList(["Higgs-Boson detected! Bailing out…", attributesDict]))

Untuk mengetahui detail selengkapnya mengenai cara menggunakan log() atau log(format:, arguments:), lihat dokumentasi referensi Crashlytics.

Objective-C

Gunakan log atau logWithFormat untuk membantu menentukan masalah. Perhatikan bahwa jika Anda ingin mendapatkan output log yang berguna dengan pesan, objek yang Anda teruskan ke salah satu metode tersebut harus mengganti properti instance description. Contoh:

[[FIRCrashlytics crashlytics] log:@"Simple string message"];

[[FIRCrashlytics crashlytics] logWithFormat:@"Higgs-Boson detected! Bailing out... %@", attributesDict];

[[FIRCrashlytics crashlytics] logWithFormat:@"Logging a variable argument list %@" arguments:va_list_arg];

Untuk mengetahui detail selengkapnya mengenai cara menggunakan log dan logWithFormat, lihat dokumentasi referensi Crashlytics.

Menetapkan ID pengguna

Untuk mendiagnosis masalah, mengetahui pengguna mana yang mengalami error akan sangat membantu. Crashlytics menyertakan cara mengidentifikasi pengguna secara anonim dalam laporan error Anda.

Untuk menambahkan ID pengguna ke laporan, tetapkan ID unik untuk setiap pengguna dalam bentuk nomor ID, token, atau nilai hash:

Swift

Crashlytics.crashlytics().setUserID("123456789")

Objective-C

[[FIRCrashlytics crashlytics] setUserID:@"123456789"];

Jika perlu menghapus ID pengguna setelah menetapkannya, reset nilainya ke string kosong. Menghapus ID pengguna tidak menghapus catatan Crashlytics yang ada. Jika ingin menghapus catatan yang terkait dengan ID pengguna, hubungi dukungan Firebase.

Mengaktifkan pelaporan keikutsertaan

Secara default, Crashlytics otomatis mengumpulkan laporan error untuk semua pengguna aplikasi Anda. Untuk memberi pengguna kontrol lebih terhadap data yang mereka kirim, Anda dapat mengaktifkan pelaporan keikutsertaan dengan menonaktifkan pelaporan otomatis dan hanya mengirim data ke Crashlytics saat Anda ingin melakukannya dalam kode:

  1. Nonaktifkan pengumpulan otomatis dengan menambahkan kunci baru ke file Info.plist Anda:

    • Kunci: FirebaseCrashlyticsCollectionEnabled
    • Nilai: false
  2. Aktifkan pengumpulan untuk pengguna tertentu dengan memanggil penggantian pengumpulan data Crashlytics saat runtime. Nilai penggantian tetap ada setiap kali aplikasi diluncurkan, sehingga Crashlytics dapat otomatis mengumpulkan laporan.

    Untuk tidak diikutsertakan dalam pelaporan error otomatis, teruskan false sebagai nilai penggantian. Jika ditetapkan ke false, nilai baru tidak berlaku hingga aplikasi dijalankan berikutnya.

    Swift

    Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)

    Objective-C

    [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];

Mengelola data Crash Insights

Crash Insights membantu Anda mengatasi masalah dengan membandingkan pelacakan tumpukan anonim dengan trace dari aplikasi Firebase lain, serta memberitahukan apakah masalah Anda adalah bagian dari tren yang lebih besar. Untuk sebagian besar masalah, Crash Insights bahkan menyediakan resource untuk membantu Anda mendebug error.

Crash Insights menggunakan data error gabungan untuk mengidentifikasi tren stabilitas umum. Jika tidak ingin membagikan data aplikasi, Anda dapat menonaktifkan Crash Insights dari menu Crash Insights di bagian atas daftar masalah Crashlytics pada Firebase console.