本指南介紹瞭如何使用 Firebase Crashlytics SDK 自定義崩潰報告。默認情況下,Crashlytics 會自動為您應用的所有用戶收集崩潰報告(您可以關閉自動崩潰報告並為您的用戶啟用選擇加入報告)。 Crashlytics 提供了四種開箱即用的日誌記錄機制:自定義鍵、自定義日誌、用戶標識符和捕獲的異常。
添加自定義鍵
自定義鍵可幫助您了解導致崩潰的應用程序的特定狀態。您可以將任意鍵/值對與您的崩潰報告相關聯,然後使用自定義鍵在 Firebase 控制台中搜索和過濾崩潰報告。
- 在Crashlytics 儀表板中,您可以搜索與自定義鍵匹配的問題。
- 當您在控制台中查看特定問題時,您可以查看每個事件的關聯自定義鍵(鍵子選項卡),甚至可以按自定義鍵過濾事件(頁面頂部的過濾器菜單)。
使用setCustomValue
方法設置鍵/值對。例如:
迅速
// 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"];
您還可以通過調用鍵並將其設置為不同的值來修改現有鍵的值。例如:
迅速
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"];
使用以 NSDictionary 作為唯一參數的setCustomKeysAndValues
方法批量添加鍵/值對:
迅速
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 頁面的“日誌”選項卡下。
迅速
使用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參考文檔。
目標-C
使用log
或logWithFormat
來幫助查明問題。請注意,如果您想獲得有用的日誌輸出消息,您傳遞給任一方法的對象必須覆蓋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];
有關如何使用log
和logWithFormat
更多詳細信息,請參閱 Crashlytics參考文檔。
設置用戶標識符
要診斷問題,了解您的哪些用戶遇到了給定的崩潰通常很有幫助。 Crashlytics 包含一種在崩潰報告中匿名識別用戶的方法。
要將用戶 ID 添加到您的報告中,請以 ID 號、令牌或散列值的形式為每個用戶分配一個唯一標識符:
迅速
Crashlytics.crashlytics().setUserID("123456789")
目標-C
[[FIRCrashlytics crashlytics] setUserID:@"123456789"];
如果您在設置用戶標識符後需要清除它,請將值重置為空字符串。清除用戶標識符不會刪除現有的 Crashlytics 記錄。如果您需要刪除與用戶 ID 關聯的記錄,請聯繫 Firebase 支持。
啟用選擇性報告
默認情況下,Crashlytics 會自動為您應用的所有用戶收集崩潰報告。為了讓用戶更好地控制他們發送的數據,您可以通過禁用自動報告並僅在您選擇在代碼中將數據發送到 Crashlytics 來啟用選擇加入報告:
通過向
Info.plist
文件添加新密鑰來關閉自動收集:- 鍵:
FirebaseCrashlyticsCollectionEnabled
- 值:
false
- 鍵:
通過在運行時調用 Crashlytics 數據收集覆蓋來為選定用戶啟用收集。覆蓋值在您的應用程序啟動後一直存在,因此 Crashlytics 可以自動收集報告。
要選擇退出自動崩潰報告,請將
false
作為覆蓋值傳遞。設置為false
時,新值直到下一次運行應用程序才會應用。迅速
Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)
目標-C
[[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];
管理 Crash Insights 數據
Crash Insights 通過將您的匿名堆棧跟踪與來自其他 Firebase 應用的跟踪進行比較,並讓您知道您的問題是否屬於更大趨勢的一部分,從而幫助您解決問題。對於許多問題,Crash Insights 甚至提供資源來幫助您調試崩潰。
Crash Insights 使用匯總的崩潰數據來識別常見的穩定性趨勢。如果您不想共享您的應用數據,您可以從Firebase 控制台中 Crashlytics 問題列表頂部的崩潰洞察菜單中選擇退出崩潰洞察。