自訂 Firebase Crashlytics 當機報告


Crashlytics 資訊主頁中,您可以點選問題瞭解詳細資訊 事件報表您可以自訂這些報表,進一步瞭解應用程式發生的情況,以及向 Crashlytics 回報的事件相關情況。

  • 如果應用程式使用 Google Analytics 的 Firebase SDK,系統會自動取得麵包屑記錄。這些記錄檔可讓您 會導致應用程式內出現 Crashlytics 收集事件的使用者動作。

  • 請關閉自動當機回報功能,並為使用者啟用選擇加入式回報功能。請注意 根據預設,Crashlytics 會自動收集所有應用程式的當機報告 觸及應用程式使用者

新增自訂鍵

你可以使用自訂鍵,取得導致當機情況的應用程式特定狀態。 您可以將任意鍵/值組合與當機報告建立關聯, 您可使用自訂鍵,在 Firebase 控制台中搜尋及篩選當機報告。

  • 您可以在 Crashlytics 資訊主頁中搜尋問題 符合自訂鍵的條件
  • 在控制台中查看特定問題時,可以查看 個別事件的相關自訂鍵 (「鍵」子分頁),甚至篩選 事件 (按頁面頂端的「篩選器」選單)。

使用 setCustomValue 方法設定鍵/值組合。例如:

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

設定整數、布林值或浮點數時,請將值方塊設為 @(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"];

您也可以呼叫鍵並將其設為其他值,藉此修改現有鍵的值。例如:

Swift

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

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

目標-C

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

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

使用 setCustomKeysAndValues 方法,並將 NSDictionary 做為唯一參數,即可大量新增鍵/值組合:

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)

目標-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];

新增自訂記錄訊息

如要進一步瞭解導致當機的事件,您可以將自訂 Crashlytics 記錄檔新增至應用程式。Crashlytics 會將記錄檔與當機資料建立關聯,並在 Firebase 控制台的「記錄檔」分頁標籤下方的 Crashlytics 頁面中顯示這些資料。

Swift

使用log()log(format:, arguments:)協助找出問題。如果發生以下情況: 想要取得內含訊息的實用記錄輸出,也就是您傳遞至 log() 必須遵守 CustomStringConvertible 資源。log() 會傳回您為物件定義的說明屬性。例如:

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

.log(format:, arguments:) 會將呼叫 getVaList() 傳回的值格式化。例如:

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

若想進一步瞭解如何使用 log()log(format:, arguments:), 請參閱 Crashlytics 參考說明文件

Objective-C

使用 loglogWithFormat 來找出問題。請注意, 想要取得內含訊息的實用記錄輸出,也就是您傳送的物件 任一方法都必須覆寫 description 例項屬性。 例如:

[[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];

如要進一步瞭解如何使用 loglogWithFormat,請參閱 Crashlytics 參考說明文件

設定使用者 ID

如要診斷問題,通常需要瞭解哪些使用者發生特定異常終止情形。Crashlytics 可讓您匿名辨識 顯示當機報告

如要在報表中加入 User-ID,請為每位使用者指派專屬 ID 形式的 ID 編號、符記或雜湊值:

Swift

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

目標-C

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

如果您在設定好使用者 ID 後需要清除,請將值重設為 空白字串清除使用者 ID 並不會將現有資料移除 Crashlytics 記錄。如何刪除與使用者相關聯的記錄 ID,請與 Firebase 支援團隊聯絡

取得導覽標記記錄

導覽標記記錄可讓您進一步瞭解使用者的互動情形 引發當機、一般錯誤或 ANR 事件。嘗試重現問題並進行偵錯時,這些記錄可能會很有幫助。

麵包屑記錄由 Google Analytics 提供支援,因此如要取得麵包屑記錄,您必須為 Firebase 專案啟用 Google Analytics,並在應用程式中新增 Google Analytics 的 Firebase SDK。滿足這些需求後,您查看問題詳細資料時,系統就會在「Logs」分頁中自動將麵包屑記錄與事件資料一併顯示。

Analytics SDK 自動記錄 screen_view 事件 可讓導覽標記記錄顯示使用者 當機、一般錯誤或 ANR 事件screen_view 導覽標記記錄中包含 firebase_screen_class 參數。

系統也會填入導覽標記記錄 您在使用者的帳戶中手動記錄的自訂事件 ,包括事件的參數資料。這項資料有助於顯示一系列 觸發引發當機、一般錯誤或 ANR 事件的使用者動作。

請注意,您可以 控管 Google Analytics 資料的收集與使用方式, 包括填入導覽標記記錄的資料。

啟用選擇加入回報功能

根據預設,Crashlytics 會自動收集所有應用程式的當機報告 觸及應用程式使用者如要讓使用者進一步控管他們傳送的資料,您可以啟用 供使用者選擇使用報告,即可停用自動報告功能,並僅將資料傳送給 Crashlytics (選擇在程式碼中執行時):

  1. 如要關閉自動收集功能,請在 Info.plist 檔案中新增一個鍵:

    • 鍵:FirebaseCrashlyticsCollectionEnabled
    • 值:false
  2. 呼叫 Crashlytics 資料,為特定使用者啟用收集功能 會在執行階段覆寫集合覆寫覆寫值 啟用的應用程式,以便Crashlytics自動收集報表。

    如要停用自動當機回報功能,請傳遞 false 做為覆寫值。如果設為 false,新的值必須等到下次執行 應用程式。

    Swift

    Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)

    Objective-C

    [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];

管理當機深入分析資料

當機深入分析會比較匿名堆疊,協助你解決問題 追蹤其他 Firebase 應用程式的追蹤記錄,讓你瞭解問題是否 一部分的趨勢針對許多問題,Crash Insights 甚至提供資源,協助您偵錯當機情形。

Crash Insights 會使用匯總的當機資料,找出常見的穩定性趨勢。 如果不想分享應用程式資料,可以選擇停用「當機深入分析」 前往 Crashlytics 問題清單頂端的「當機深入分析」選單 Firebase 控制台中。