Мобильные SDK
iOS (Swift), Android (Kotlin) и Flutter. Все три — нативные SDK с офлайн-очередью, трекингом жизненного цикла и флагами функций.
iOS (TrektikSDK 0.1.0)
Swift 5.9+, iOS 14+ / macOS 12+.
iOS SDK выдаётся приватно. Два варианта установки: (A) аккаунт-менеджер даёт доступ к приватному git-репозиторию — вы подключаете через Swift Package Manager(Xcode → File → Add Package Dependencies → git-URL); либо (B) получаете TrektikSDK-0.1.0.xcframework.zip, распаковываете и добавляете в target черезEmbed & Sign.
// после установки (через SPM или XCFramework):
import TrektikSDK
Trektik.shared.configure(apiKey: "pk_...") { config in
config.trackLifecycleEvents = true
config.debug = false
}
Trektik.shared.setUserId("user-123")
Trektik.shared.setProjectId(42)
Trektik.shared.track("screen_view", properties: ["screen": "home"])
Trektik.shared.trackRevenue(4990.0, properties: ["currency": "RUB"])
Trektik.shared.identify("user-123", properties: ["email": "u@example.com"])
// Feature flag (async)
let value = await Trektik.shared.getFlag("checkout_v2")
Trektik.shared.flush()
Trektik.shared.shutdown()При trackLifecycleEvents:
Application Opened—UIApplication.didBecomeActiveNotificationApplication Backgrounded—didEnterBackgroundNotification+ flushApplication Installed/Application Updated— по$app_versionизUserDefaults
Android (ru.trektik:trektik-android 0.1.0)
Kotlin, minSdk 24. Использует AndroidX Lifecycle.
Android SDK выдаётся приватно — аккаунт-менеджер пришлёт trektik-android-0.1.0.aar. Положите в app/libs/.
// app/build.gradle.kts
dependencies {
implementation(files("libs/trektik-android-0.1.0.aar"))
// транзитивные зависимости — AAR их не приносит:
implementation("androidx.lifecycle:lifecycle-process:2.8.0")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.0")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0")
}import ru.trektik.android.Trektik
import ru.trektik.android.TrektikConfig
class App : Application() {
override fun onCreate() {
super.onCreate()
Trektik.configure(this, "pk_...", TrektikConfig(
apiKey = "pk_...",
trackLifecycleEvents = true,
debug = BuildConfig.DEBUG,
))
}
}
// В любом месте приложения:
Trektik.setUserId("user-123")
Trektik.track("screen_view", mapOf("screen" to "home"))
Trektik.trackRevenue(4990.0, mapOf("currency" to "RUB"))
Trektik.identify("user-123", mapOf("email" to "u@example.com"))
// Feature flag (синхронный — вызывать с фонового треда)
val value = Trektik.getFlag("user-123", "checkout_v2")
Trektik.flush()
Trektik.shutdown()При trackLifecycleEvents = true:
Application Opened—ProcessLifecycleOwner.onStartApplication Backgrounded—onStop+ flushApplication Installed/Application Updated— сравнение с версией вSharedPreferences
Offline queue в SharedPreferences, восстанавливается при configure().
Flutter (trektik 0.1.0)
Dart >= 3.0, Flutter >= 3.10.
Flutter SDK выдаётся приватно — аккаунт-менеджер даёт доступ к приватному git-репозиторию или присылает архив пакета.
# pubspec.yaml (вариант 1 — через git с доступом к приватному монорепо)
dependencies:
trektik:
git:
url: git@github.com:AleksandrKlyasyuk/analitycs-service.git
path: sdk/flutter
ref: v0.1.0
# либо (вариант 2 — локальный путь после распаковки архива)
# dependencies:
# trektik:
# path: packages/trektikimport 'package:flutter/material.dart';
import 'package:trektik/trektik.dart';
Future<void> main() async {
await Trektik.init(TrektikConfig(
apiKey: 'pk_...',
endpoint: 'https://api.trektik.ru', // по умолчанию
debug: false,
autocapture: true,
flushInterval: 30, // секунды
flushSize: 20,
sessionTimeout: 30, // minutes
maxQueueSize: 1000,
));
runApp(MyApp());
}
// В любом месте:
Trektik.instance.track('button_tap', properties: {'screen': 'home'});
Trektik.instance.identify('user-123', properties: {'plan': 'pro'});
Trektik.instance.trackRevenue(4990.0, 'RUB', properties: {'product': 'pro-monthly'});
await Trektik.instance.flush();
await Trektik.instance.reset();
await Trektik.instance.optOut();
await Trektik.instance.optIn();
// Геттеры
Trektik.instance.deviceId;
Trektik.instance.userId;
Trektik.instance.sessionId;
Trektik.instance.isOptedOut;
Trektik.instance.queueLength;Автотрекинг экранов через NavigatorObserver:
MaterialApp(
navigatorObservers: [TrektikNavigatorObserver()],
// ...
);Шлёт $screen_view с $screen_name при push/replace/pop. Lifecycle: AppLifecycleState.resumed → Application Opened, paused → Application Backgrounded + flush.