Быстрый старт

Регистрация и настройка

Для начала нужно:

  1. Зайти в аккаунт Tracer.
  2. Создать или вступить в организацию.
  3. Добавить iOS проект (нужно быть администратором или владельцем организации).

После создания проекта вам будет доступно 2 токена:

  • appToken - для инициализации Трейсера внутри вашего приложения
  • pluginToken - для загрузки символов на сервера Трейсера

Подключение зависимостей к проекту

Для cocoapods Podfile

source 'https://github.com/odnoklassniki/tracer-ios.git' pod 'OKTracer'

В случае подключения через SPM к вашему пакету требуется прописать дополнительную настройку для линковщика в вашем Package.swift:

linkerSettings: [.unsafeFlags(["-weak-lswiftDemangle"])]

Включение плагинов Трейсера и их конфигурация в проекте

import OKTracer class AppDelegate { var tracerService: TracerServiceProtocol! func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { tracerService = TracerFactory.tracerServiceForCrashReporting(EndpointConfiguration(token: "Ваш appToken")) tracerService.start() // Обработка сбоя приложения после перезапуска switch tracerService.lastSessionState() { case let .normal(crashCount): print("В последней сессии сбоев не было. Не отправлено \(crashCount) сбоев.") case let .crashed(crashCount, result): print("В последней сессии был сбой. Не отправлено \(crashCount) сбоев.") switch result { case let .success(crashModel): print("Время последнего сбоя\(crashModel.timestamp). Время последнего запуска приложения \(crashModel.startTime).") case let .failure(error): print("При получении последнего сбоя произошла ошибка \(error)") } } } }

Для более тонкой настройки Трейсера нужно использовать другой метод инициализации:

import OKTracer let features: [FeatureConfiguration] = [ .crashReporter(config: TracerCrashReporterConfiguration()), .assertReporter(config: TracerAssertReporterConfiguration()), .diskUsage(config: TracerDiskUsageConfiguration()), .systrace(config: TracerSystraceConfiguration()) ] let items: [FeatureObject] = [ .diskUsage(objects: [.folder(path: NSHomeDirectory(), tag: "homeDirectory")]), .systrace(scenarios: ["launch", "urlSession"]) ] let configuration = Configuration(EndpointConfiguration(token: "Ваш appToken", url: "Ваш кастомный url"), features: features) let tracerService = TracerFactory.tracerService(configuration: configuration, items: items) tracerService.start()

Вы можете указать кастомный url при инициализации SDK – данные будут отправляться на указанный хост вместо значения по умолчанию. Используйте опцию, если, например, хотите предварительно обрабатывать данные в собственном сервисе.

Подробное описание опций:

  • FeatureConfiguration.crashReporter/FeatureConfiguration.assertReporter — на странице Crashes
  • FeatureObject.diskUsage/FeatureConfiguration.diskUsage — на странице Disk Usage
  • FeatureObject.systrace/FeatureConfiguration.systrace — на странице Systrace Profiler

Описание TracerServiceProtocol

ФункцияПараметрыОписание
start-Запускает все проинициализированные сервисы SDK
startfeatures: [OKTracer.FeatureType]Запускает перечисленные сервисы SDK
stop-Останавливает все проинициализированные сервисы SDK
stopfeatures: [OKTracer.FeatureType]Останавливает перечисленные сервисы SDK
lastSessionState-Возвращает статус предыдущей сессии приложения.
lastSessionHangsCount-Возвращает количество зависаний в предыдущей сессии
updateproperties: [String : String] Добавляет/обновляет значения пользовательских пропертей
updatetags: [String : String]Добавляет/обновляет значения пользовательских ключей
sendnonFatal: OKTracer.TracerNonFatalModelПозволяет вручную зарегистрировать ошибку. Подробнее читайте здесь
setUserId_ userId: StringУстанавливает id пользователя в том виде, в котором его понимает ваше приложение
setComponent_ component: StringУстанавливает компонент вашего приложения, в котором зафиксирован сбой
setEnvironment_ environment: StringУстанавливает окружение вашего приложения, в котором зафиксирован сбой.

Описание TracerServiceDelegate

Для получения событий от Трейсера нужно реализовать поддержку делегата TracerServiceDelegate:

  • Передать объект, реализующий делегат, в фабрику:
let tracerService = TracerFactory.tracerServiceForCrashReporting(EndpointConfiguration(token: "Ваш appToken"), delegate: yourDelegate) tracerService.start()
  • Задать свойство Трейсера:
let tracerService = TracerFactory.tracerServiceForCrashReporting(EndpointConfiguration(token: "Ваш appToken")) tracerService.delegate = yourDelegate tracerService.start()

Описание TracerSystemInfoProviderProtocol

Для переопределения провайдера получения данных о системе нужно реализовать протокол TracerSystemInfoProviderProtocol:

  • Передать его в фабрику:
let tracerService = TracerFactory.tracerServiceForCrashReporting(EndpointConfiguration(token: "Ваш appToken"), sysInfoProvider: yourImplementation) tracerService.start()
  • Передать его в конфигурацию:
let features: [FeatureConfiguration] = [.crashReporter(), .assertReporter()] let configuration = Configuration(EndpointConfiguration(token: "Ваш appToken"), features: features, sysInfoProvider: yourImplementation) let tracerService = TracerFactory.tracerServiceForCrashReporting(configuration: configuration) tracerService.start()

Автоматическая отправка DSYM

  • С помощью Fastlane — на странице Fastlane
  • С помощью Bash – на странице Bash скрипт

Демо проект

Ознакомиться с примером интеграции можно в нашем демо проекте