Для начала нужно:
После создания проекта вам будет доступно 2 токена:
Плагин к Fastlane — на странице Fastlane
Подробнее на странице Bash скрипт
Для 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(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(maxUploadsCount: 3, shouldUseHack: false), .assertReporter(maxUploadsCount: 10, sendEvery: 10), .diskUsage(probability: 10000), .systrace(probability: 10000) ] let items: [FeatureObject] = [ .diskUsage(objects: [.folder(path: NSHomeDirectory(), tag: "homeDirectory")]), .systrace(scenarios: ["launch", "urlSession"]), .threadMonitor(objects: [.dispatch(queue: .main)]), .sampledTrace(scenarios: ["main"]) ] let configuration = Configuration(token: "Ваш appToken", features: features) let tracerService = TracerFactory.tracerService(configuration: configuration, items: items) tracerService.start()
Подробное описание опций:
FeatureConfiguration.crashReporter/FeatureConfiguration.assertReporter
— на странице Crash и ANRFeatureObject.diskUsage/FeatureConfiguration.diskUsage
— на странице Disk UsageFeatureObject.systrace/FeatureConfiguration.systrace
— на странице Systrace ProfilertracerService.stop(features: [.diskUsage, .systrace]) tracerService.start(features: [.diskUsage, .systrace])
Для получения событий от трейсера нужно реализовать поддержку делегата TracerServiceDelegate:
let tracerService = TracerFactory.tracerServiceForCrashReporting(token: "Ваш appToken", delegate: yourDelegate) tracerService.start()
let tracerService = TracerFactory.tracerServiceForCrashReporting(token: "Ваш appToken") tracerService.delegate = yourDelegate tracerService.start()
Для переопределения провайдера получения данных о системе нужно реализовать протокол TracerSystemInfoProviderProtocol
let tracerService = TracerFactory.tracerServiceForCrashReporting(token: "Ваш appToken", sysInfoProvider: yourImplementation) tracerService.start()
let features: [FeatureConfiguration] = [.crashReporter(), .assertReporter()] let configuration = Configuration(token: "Ваш appToken", features: features, sysInfoProvider: yourImplementation) let tracerService = TracerFactory.tracerServiceForCrashReporting(configuration: configuration) tracerService.start()
Ознакомиться с примером интеграции можно в нашем демо проекте