Для начала нужно:
После создания проекта вам будет доступно 2 токена:
Для 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
— на странице CrashesFeatureObject.diskUsage/FeatureConfiguration.diskUsage
— на странице Disk UsageFeatureObject.systrace/FeatureConfiguration.systrace
— на странице Systrace ProfilerФункция | Параметры | Описание |
---|---|---|
start | - | Запускает все проинициализированные сервисы SDK |
start | features: [OKTracer.FeatureType] | Запускает перечисленные сервисы SDK |
stop | - | Останавливает все проинициализированные сервисы SDK |
stop | features: [OKTracer.FeatureType] | Останавливает перечисленные сервисы SDK |
lastSessionState | - | Возвращает статус предыдущей сессии приложения. |
lastSessionHangsCount | - | Возвращает количество зависаний в предыдущей сессии |
update | properties: [String : String] | Добавляет/обновляет зна чения пользовательских пропертей |
update | tags: [String : String] | Добавляет/обновляет значения пользовательских ключей |
send | nonFatal: OKTracer.TracerNonFatalModel | Позволяет вручную зарегистрировать ошибку. Подробнее читайте здесь |
setUserId | _ userId: String | Устанавливает id пользователя в том виде, в котором его понимает ваше приложение |
setComponent | _ component: String | Устанавливает компонент вашего приложения, в котором зафиксирован сбой |
setEnvironment | _ environment: String | Устанавливает окружение вашего приложения, в котором зафиксирован сбой. |
Для получения событий от Трейсера нужно реализовать поддержку делегата 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
:
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()
Ознакомиться с примером интеграции можно в нашем демо проекте