В этом руководстве описывается, как настроить отчеты о сбоях с помощью 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"];
Массовое добавление пар ключ/значение с помощью метода setCustomKeysAndValues
с NSDictionary в качестве единственного параметра:
Быстрый
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 связывает журналы с данными о сбоях и отображает их на странице Crashlytics консоли Firebase на вкладке «Журналы» .
Быстрый
Используйте 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 включает способ анонимной идентификации пользователей в ваших отчетах о сбоях.
Чтобы добавить идентификаторы пользователей в отчеты, назначьте каждому пользователю уникальный идентификатор в виде идентификационного номера, токена или хешированного значения:
Быстрый
Crashlytics.crashlytics().setUserID("123456789")
Цель-C
[[FIRCrashlytics crashlytics] setUserID:@"123456789"];
Если вам когда-нибудь понадобится очистить идентификатор пользователя после его установки, сбросьте значение до пустой строки. Очистка идентификатора пользователя не удаляет существующие записи Crashlytics. Если вам нужно удалить записи, связанные с идентификатором пользователя, обратитесь в службу поддержки 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 использует агрегированные данные о сбоях для определения общих тенденций стабильности. Если вы предпочитаете не делиться данными своего приложения, вы можете отказаться от Crash Insights в меню Crash Insights в верхней части списка проблем Crashlytics в консоли Firebase .