本指南介绍了如何使用 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 问题列表顶部的崩溃洞察菜单中选择退出崩溃洞察。