自訂 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")

目標-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)")

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

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

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

目標-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 可讓您在當機報告中以匿名方式識別使用者。

如要在報表中加入使用者 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 新增至應用程式。符合這些規定後,系統就會在您查看問題詳細資料時,自動將導覽標記記錄與事件資料一併納入「記錄」分頁中。

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)

    目標-C

    [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];

管理當機深入分析資料

當機分析功能可將匿名堆疊追蹤與其他 Firebase 應用程式的追蹤記錄進行比較,讓您瞭解問題是否出在更大趨勢,進而解決問題。許多問題甚至會提供相關資源來協助偵錯。

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