За работу с нон-фаталами отвечает FeatureConfiguration.assertReporter
. Сперва необходимо убедиться, что структура Configuration
содержит этот кейс при создании TracerService
.
.assertReporter
в Configuration
.let tracerService = TracerFactory.tracerServiceForCrashReporting(token: "Ваш appToken")
.assertReporter
в параметр features
, используя методlet tracerService = TracerFactory.tracerService(token: "Ваш appToken", features: [.assertReporter()])
Configuration
самостоятельно и передать в методlet configuration = Configuration(token: "Ваш appToken", features: [.assertReporter()]) let tracerService = TracerFactory.tracerService(configuration: configuration)
message
- текст нон-фаталаtags
- дополнительная информация, отображаемая на вкладке Ключи внутри событияproperties
- дополнительная информация, отображаемая на вкладке Данные внутри событияfileName
- имя файлаfunction
- имя функцииline
- номер строкиtraceType
- источник информации о потокеcurrent
- вариант по умолчанию, использует текущее имя потока и текущий стектрейс, обрезая dropFirstSymbols
фреймов с начала.custom
- вариант используется, когда у Вас уже есть стектрейс и его надо обернуть в событие. К стектрейсу также можно докинуть символы (есть нюансы, подробнее в статье Символизация). dropFirstSymbols
работает аналогично current
, только теперь применяется и к символам, и к стектрейсу. Помимо этого есть возможность задать своё имя потока. Если этого не сделать, будет использоваться текущее, как в current
.Для того, чтобы нон-фаталы группировались не по стектрейсу (поведение по умолчанию), а по особому признаку, можно передать в properties
значение с ключом IssueKey
. После этого появится возможность фильтровать события по данному ключу в общем списке нон-фаталов.
Также на стороне SDK после создания модели на этапе отправки происходит дополнительный процессинг properties
. Поэтому следует избегать использования следующих ключей, так как вследствие обработки часть ключей могут быть перезаписаны.
message
- сюда SDK всегда записывает текст нон-фатала.file
- сюда SDK может записывать комбинацию из fileName
, function
и line
. Необходимым условием является наличие хотя бы одного из перечисленных параметров.let nonFatal = TracerNonFatalModel(message: "User error") tracerService.send(nonFatal: nonFatal)
let nonFatal = TracerNonFatalModel(message: "User error") tracerService.send(nonFatal, fileName: StaticString = #file, function: StaticString = #function, line: Int = #line)
Вариант 2 отличается тем, что в случае когда какое-либо из полей fileName
, function
или line
модели будет nil
, то оно перезапишется соответствующим параметром метода.