### Install via CocoaPods Source: https://context7.com/mtswebservices/mts-analytics-ios-sdk/llms.txt Configure your Podfile to install MTAnalytics, including the necessary GRDB.swift dependency. ```ruby # Podfile source 'https://github.com/MTSWebServices/mts-analytics-ios-sdk' source 'https://cdn.cocoapods.org/' platform :ios, '15.0' use_frameworks! target 'MyApp' do pod 'GRDB.swift', git: 'https://github.com/groue/GRDB.swift.git', tag: 'v6.29.3' pod 'MTAnalytics', '~> 6.4.0' end # Установка: pod install ``` -------------------------------- ### Install via Swift Package Manager Source: https://context7.com/mtswebservices/mts-analytics-ios-sdk/llms.txt Add the MTAnalytics dependency to your project's Package.swift file for automatic loading and integration. ```swift // Package.swift import PackageDescription let package = Package( name: "MyApp", platforms: [ .iOS(.v15), .tvOS(.v15) ], dependencies: [ .package(url: "https://github.com/MTSWebServices/mts-analytics-ios-sdk", from: "6.4.0") ], targets: [ .target( name: "MyApp", dependencies: [ .product(name: "MTAnalytics", package: "mts-analytics-ios-sdk") ] ) ] ) ``` -------------------------------- ### Configure User-Agent and User ID Source: https://context7.com/mtswebservices/mts-analytics-ios-sdk/llms.txt Set a global user identifier and a custom User-Agent for SDK requests. The `setUserIdentifier` method is available from SDK version 6.3.0, and `setUserAgent` from version 6.4.0. This includes examples for user login and logout tracking. ```swift import MTAnalytics class UserManager { // Установка глобального идентификатора пользователя (с версии 6.3.0) func setUserIdentifier(userId: String) { MTAnalytics.shared.setUserId(userId) } // Установка кастомного User-Agent (с версии 6.4.0) func setCustomUserAgent() { let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.0" let customUA = "MyApp/\(appVersion) (iOS; MTAnalytics)" MTAnalytics.shared.setUserAgent(customUA) } // Пример авторизации пользователя с трекингом func userDidLogin(userId: String, method: String) { // Установка идентификатора setUserIdentifier(userId: userId) // Трекинг события авторизации let event = MTCustomEvent( eventName: "login", parameters: [ "user_id": userId, "method": method ] ) MTAnalytics.shared.track(event) } // Выход пользователя func userDidLogout() { // Очистка идентификатора MTAnalytics.shared.setUserId(nil) // Трекинг события выхода let event = MTCustomEvent(eventName: "logout", parameters: [:]) MTAnalytics.shared.track(event) } } ``` -------------------------------- ### Add MTAnalytics Dependency in Podfile Source: https://github.com/mtswebservices/mts-analytics-ios-sdk/blob/main/README.md Include the MTAnalytics pod in your Podfile for installation via CocoaPods. Specify the version constraint. ```ruby pod 'MTAnalytics', '~> 6.4.0' ``` -------------------------------- ### Initialize MTAnalytics for SwiftUI Source: https://github.com/mtswebservices/mts-analytics-ios-sdk/blob/main/README.md For SwiftUI applications, create a custom AppDelegate class that conforms to UIApplicationDelegate. Implement the didFinishLaunchingWithOptions method to configure MTAnalytics. Then, use the @UIApplicationDelegateAdaptor property wrapper in your App struct to connect the AppDelegate. ```swift import UIKit import MTAnalytics class AppDelegate: NSObject, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool { let configuration = MTAnalyticsConfiguration(flowId: "your-flow-id") MTAnalyticsApp.configure(configuration) return true } } ``` ```swift import SwiftUI @main struct YourAppNameApp: App { // Подключаем AppDelegate через property wrapper @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate var body: some Scene { WindowGroup { ContentView() } } } ``` -------------------------------- ### Initialize SDK for SwiftUI Source: https://context7.com/mtswebservices/mts-analytics-ios-sdk/llms.txt Integrate MTAnalytics into a SwiftUI application by using the UIApplicationDelegate adapter. Ensure the AppDelegate is correctly configured and adapted. ```swift // AppDelegate.swift import UIKit import MTAnalytics class AppDelegate: NSObject, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool { let configuration = MTAnalyticsConfiguration(flowId: "your-flow-id") MTAnalyticsApp.configure(configuration) return true } } // MyApp.swift import SwiftUI @main struct MyApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate var body: some Scene { WindowGroup { ContentView() } } } ``` -------------------------------- ### Initialize MTAnalytics for UIKit Source: https://github.com/mtswebservices/mts-analytics-ios-sdk/blob/main/README.md Configure the MTAnalytics SDK by creating an MTAnalyticsConfiguration with your flow ID and calling the configure method on MTAnalyticsApp. This should be done in your UIApplicationDelegate's didFinishLaunchingWithOptions method. ```swift import MTAnalytics func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool { let configuration = MTAnalyticsConfiguration(flowId: "your-flow-id") MTAnalyticsApp.configure(configuration) return true } ``` -------------------------------- ### Initialize SDK for UIKit Source: https://context7.com/mtswebservices/mts-analytics-ios-sdk/llms.txt Configure and initialize MTAnalytics in your AppDelegate upon application launch, specifying a flowId for data stream identification. Optional settings like session timeout and roaming mode can also be configured. ```swift import UIKit import MTAnalytics @main class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Создание конфигурации с обязательным flowId let configuration = MTAnalyticsConfiguration(flowId: "your-flow-id") // Опциональные настройки конфигурации // configuration.sessionTimeout = 1800 // Таймаут сессии в секундах // configuration.enableRoamingMode = false // Отправка данных в роуминге // configuration.maxStoredEvents = 10000 // Лимит хранимых событий // Инициализация SDK MTAnalyticsApp.configure(configuration) return true } } ``` -------------------------------- ### Import MTAnalytics Library Source: https://github.com/mtswebservices/mts-analytics-ios-sdk/blob/main/README.md Import the MTAnalytics module at the beginning of your Swift file to access its functionalities. ```swift import MTAnalytics ``` -------------------------------- ### Add Swift Package Dependency in Package.swift Source: https://github.com/mtswebservices/mts-analytics-ios-sdk/blob/main/README.md Add the SDK as a dependency in your Package.swift file. Ensure you specify the correct package name and version. ```swift .dependencies: [ .package(url: "https://github.com/MTSWebServices/mts-analytics-ios-sdk", from: "6.4.0") ], ``` ```swift .target( name: "YourLibrary", dependencies: [ .product(name: "MTAnalytics", package: "mts-analytics-ios-sdk"), ] ), ``` -------------------------------- ### Manage Remote Configurations Source: https://context7.com/mtswebservices/mts-analytics-ios-sdk/llms.txt Access and utilize remote configurations to dynamically alter app behavior without requiring app updates. Use `getValue(forKey:)` for specific flags or `allValues` for all configurations. The `@MTRemoteConfigWrapper` property wrapper simplifies accessing values. ```swift import MTAnalytics class RemoteConfigManager { // Получение значения Remote Config по ключу func getFeatureFlag(key: String) -> String? { return MTAnalytics.shared.remoteConfig.getValue(forKey: key) } // Получение всех значений Remote Config func getAllRemoteValues() -> [String: Any] { return MTAnalytics.shared.remoteConfig.allValues } // Получение дефолтных значений func getDefaultValues() -> [String: Any] { return MTAnalytics.shared.remoteConfig.allDefaultValues } // Использование Property Wrapper для получения значений (с версии 5.2.0) @MTRemoteConfigWrapper(key: "new_feature_enabled", defaultValue: "false") var isNewFeatureEnabled: String func checkFeature() { if isNewFeatureEnabled == "true" { // Включить новую функциональность print("Новая функция включена") } } } // Пример использования let configManager = RemoteConfigManager() // Проверка флага функции if let showBanner = configManager.getFeatureFlag(key: "show_promo_banner"), showBanner == "true" { // Показать промо-баннер } // Получение всех конфигов let allConfigs = configManager.getAllRemoteValues() print("Все Remote Config значения: \(allConfigs)") ``` -------------------------------- ### Handle Deeplink and Universal Link Tracking Source: https://context7.com/mtswebservices/mts-analytics-ios-sdk/llms.txt Implement these methods in your AppDelegate to process incoming deeplinks (URL Schemes) and universal links, passing them to the MTAnalytics SDK for resolution and tracking. Ensure proper error handling for link resolution. ```swift import UIKit import MTAnalytics class AppDelegate: UIResponder, UIApplicationDelegate { // Обработка deeplink (URL Scheme) func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { // Передача deeplink в SDK для трекинга MTAnalytics.shared.linkResolver.resolveLink(url) { result in switch result { case .success(let linkParams): print("Deeplink параметры: \(linkParams)") // Обработка параметров ссылки case .failure(let error): print("Ошибка обработки deeplink: \(error)") } } return true } // Обработка universal link func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL else { return false } // Передача universal link в SDK MTAnalytics.shared.linkResolver.resolveLink(url) { result in switch result { case .success(let linkParams): print("Universal link параметры: \(linkParams)") // Навигация на нужный экран case .failure(let error): print("Ошибка обработки universal link: \(error)") } } return true } } ``` ```swift // Отслеживание события deeplink func trackDeeplinkEvent(url: URL, source: String?) { let event = MTCustomEvent( eventName: "deeplink_opened", parameters: [ "url": url.absoluteString, "source": source ?? "unknown", "timestamp": ISO8601DateFormatter().string(from: Date()) ] ) MTAnalytics.shared.track(event) } ``` -------------------------------- ### Retrieve SDK Version and Send Diagnostic Events Source: https://context7.com/mtswebservices/mts-analytics-ios-sdk/llms.txt Use these methods to log SDK metadata or report diagnostic data to the analytics backend. Ensure the MTAnalytics module is imported before accessing SDK properties. ```swift import MTAnalytics class DiagnosticsManager { func logSDKInfo() { // Получение версии SDK let sdkVersion = MTAnalyticsApp.sdkVersion print("MTAnalytics SDK Version: \(sdkVersion)") // Получение номера сборки SDK let buildNumber = MTAnalyticsApp.sdkBuildNumber print("MTAnalytics Build Number: \(buildNumber)") } // Отправка диагностического события func sendDiagnosticEvent() { let event = MTCustomEvent( eventName: "app_diagnostic", parameters: [ "sdk_version": MTAnalyticsApp.sdkVersion, "sdk_build": MTAnalyticsApp.sdkBuildNumber, "ios_version": UIDevice.current.systemVersion, "device_model": UIDevice.current.model ] ) MTAnalytics.shared.track(event) } } ``` -------------------------------- ### Track Ecosystem Events with MTAppEvent Source: https://context7.com/mtswebservices/mts-analytics-ios-sdk/llms.txt Use MTAppEvent to send structured ecosystem events. Ensure to set the eventName and timestamp. Optional fields like screenName, eventCategory, and crossSessionId can enhance event tracking. ```swift import MTAnalytics class EcosystemEventsManager { // Отправка экосистемного события с полным набором параметров func trackAppEvent() { var appEvent = MTAppEvent() // Обязательные поля appEvent.eventName = "purchase_completed" appEvent.timestamp = Date() // С версии 6.0.0 заполняется вручную // Опциональные поля (String? с версии 6.0.0) appEvent.screenName = "checkout_screen" appEvent.eventCategory = "ecommerce" appEvent.eventAction = "purchase" appEvent.eventLabel = "premium_subscription" appEvent.eventValue = "299.99" // crossSessionId для связи событий между сессиями (с версии 6.2.0) appEvent.crossSessionId = UUID().uuidString MTAnalytics.shared.track(appEvent) } // Настройка дефолтных значений для всех экосистемных событий func setupEventDefaults() { var defaults = MTAppEventDefaults() defaults.appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String defaults.platform = "iOS" MTAnalytics.shared.setAppEventDefaults(defaults) } } ``` -------------------------------- ### Set Pod Source for MTAnalytics Source: https://github.com/mtswebservices/mts-analytics-ios-sdk/blob/main/README.md Specify the source for the MTAnalytics library in your Podfile. This ensures CocoaPods fetches the SDK from the correct repository. ```ruby source 'https://github.com/MTSWebServices/mts-analytics-ios-sdk' ``` -------------------------------- ### Track E-commerce Events Source: https://context7.com/mtswebservices/mts-analytics-ios-sdk/llms.txt Implement e-commerce tracking for sales funnels, including product views, add-to-cart, and purchases. Use MTCustomEvent with relevant parameters for each action. ```swift import MTAnalytics class EcommerceTracker { // Просмотр товара func trackProductView(productId: String, productName: String, price: Double, category: String) { let event = MTCustomEvent( eventName: "view_item", parameters: [ "item_id": productId, "item_name": productName, "price": price, "currency": "RUB", "item_category": category ] ) MTAnalytics.shared.track(event) } // Добавление в корзину func trackAddToCart(productId: String, productName: String, price: Double, quantity: Int) { let event = MTCustomEvent( eventName: "add_to_cart", parameters: [ "item_id": productId, "item_name": productName, "price": price, "quantity": quantity, "currency": "RUB" ] ) MTAnalytics.shared.track(event) } // Оформление покупки func trackPurchase(orderId: String, items: [[String: Any]], totalAmount: Double) { let event = MTCustomEvent( eventName: "purchase", parameters: [ "transaction_id": orderId, "value": totalAmount, "currency": "RUB", "items": items ] ) MTAnalytics.shared.track(event) } } // Пример использования let tracker = EcommerceTracker() // Просмотр товара tracker.trackProductView( productId: "SKU12345", productName: "Смартфон MTS Premium", price: 29999.0, category: "electronics/phones" ) // Добавление в корзину tracker.trackAddToCart( productId: "SKU12345", productName: "Смартфон MTS Premium", price: 29999.0, quantity: 1 ) // Покупка tracker.trackPurchase( orderId: "ORDER-2024-001", items: [ ["item_id": "SKU12345", "item_name": "Смартфон MTS Premium", "price": 29999.0, "quantity": 1] ], totalAmount: 29999.0 ) ``` -------------------------------- ### Track Custom Events Source: https://context7.com/mtswebservices/mts-analytics-ios-sdk/llms.txt Track user actions in your application using custom events with arbitrary parameters. This includes sending simple events, screen view events with details, and asynchronous event tracking. ```swift import MTAnalytics class AnalyticsManager { // Отправка простого события func trackButtonClick(buttonName: String) { let event = MTCustomEvent( eventName: "button_click", parameters: ["button_name": buttonName] ) MTAnalytics.shared.track(event) } // Отправка события просмотра экрана func trackScreenView(screenName: String, screenClass: String) { let event = MTCustomEvent( eventName: "screen_view", parameters: [ "screen_name": screenName, "screen_class": screenClass, "timestamp": ISO8601DateFormatter().string(from: Date()) ] ) MTAnalytics.shared.track(event) } // Асинхронная отправка события (доступно с версии 5.0.0) func trackEventAsync(eventName: String, params: [String: Any]) async { let event = MTCustomEvent(eventName: eventName, parameters: params) await MTAnalytics.shared.trackAsync(event) } } ``` -------------------------------- ### Track Screen Load Times Source: https://context7.com/mtswebservices/mts-analytics-ios-sdk/llms.txt Monitor screen loading performance by calling `trackViewDidAppear` when a view controller appears. This snippet also demonstrates how to capture and track the specific load time of a screen using a custom event. ```swift import UIKit import MTAnalytics class ProductDetailViewController: UIViewController { private var loadStartTime: Date? override func viewDidLoad() { super.viewDidLoad() loadStartTime = Date() // Загрузка данных loadProductData() } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) // Отслеживание времени появления экрана MTAnalytics.shared.trackViewDidAppear( screenName: "ProductDetail", screenClass: String(describing: type(of: self)) ) // Дополнительный трекинг времени загрузки if let startTime = loadStartTime { let loadTime = Date().timeIntervalSince(startTime) trackScreenLoadTime(screenName: "ProductDetail", loadTime: loadTime) } } private func trackScreenLoadTime(screenName: String, loadTime: TimeInterval) { let event = MTCustomEvent( eventName: "screen_load_time", parameters: [ "screen_name": screenName, "load_time_ms": Int(loadTime * 1000) ] ) MTAnalytics.shared.track(event) } private func loadProductData() { // Загрузка данных о товаре } } ``` -------------------------------- ### Configure GRDB.swift for CocoaPods Source: https://github.com/mtswebservices/mts-analytics-ios-sdk/blob/main/README.md When using MTAnalytics with CocoaPods version 5.3.0 and later, you must explicitly specify the GRDB.swift pod with its Git URL and tag. ```ruby pod 'GRDB.swift', git: 'https://github.com/groue/GRDB.swift.git', tag: 'v6.29.3' pod 'MTAnalytics', '~> 6.4.0' ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.