自訂 Firebase Crashlytics 當機報告

在 Crashlytics 資訊主頁中,您可以點選問題並取得詳細事件報表。您可以自訂這些報表,進一步瞭解應用程式中的活動,以及回報給 Crashlytics 的事件情況。

  • 如果應用程式使用 Google Analytics (分析) 專用 Firebase SDK,會自動取得導覽標記記錄。這些記錄檔可讓您瞭解使用者在您的應用程式中觸發 Crashlytics 收集事件的使用者動作。

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

新增自訂鍵

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

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

使用 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")

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

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

新增自訂記錄訊息

如要進一步掌握引發當機情況的事件,您可以在應用程式中新增自訂 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 參考說明文件

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

如要將使用者 ID 新增至報表,請以 ID 號碼、權杖或雜湊值的形式為每位使用者指派專屬 ID:

Swift

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

Objective-C

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

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

取得導覽標記記錄

導覽標記記錄可讓您進一步瞭解使用者在發生當機、一般或 ANR 事件時,與應用程式進行的互動。這類記錄檔有助於嘗試重現問題並進行偵錯。

導覽標記記錄採用 Google Analytics (分析) 技術,因此您需要為 Firebase 專案啟用 Google Analytics (分析),並在應用程式中新增 Firebase SDK for Google Analytics。只要符合這些要求,系統就會在「記錄檔」分頁中自動加入導覽標記記錄,並在問題詳細資料中附上事件資料。

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

管理「當機深入分析」資料

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

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