### npm Install SDK Source: https://eventer.premex.se/llms-full.txt Command to install the Eventer SDK using npm. ```bash npm install @{ORGANISATION}/{PROJECT_ID} ``` -------------------------------- ### Initializing with Multiple Trackers Source: https://eventer.premex.se/llms-full.txt Example of initializing the SDK with multiple tracker implementations. ```kotlin // ALL trackers that were defined in the Eventer UI must be provided here val tracker = Eventer.initialize(consoleTracker, firebaseTracker, mixpanelTracker) ``` -------------------------------- ### npm Install SDK with Specific Registry Source: https://eventer.premex.se/llms-full.txt Command to install the Eventer SDK using npm, specifying the registry directly. ```bash npm install @{ORGANISATION}/{PROJECT_ID} --registry=https://artifacts.premex.se/api/npm/eventer/{REPOSITORY_ID}/ ``` -------------------------------- ### Implementing a Log Tracker Source: https://eventer.premex.se/llms-full.txt Example implementation of a Log Tracker protocol. ```swift class ConsoleTracker: LogTracker { func track(event: Event) { print("Tracked: \(event.name) with parameters: \(event.parameters)") } } ``` -------------------------------- ### Implementing a Log Tracker Source: https://eventer.premex.se/llms-full.txt Example implementation of a LogTracker receiver. ```kotlin val consoleTracker = object : LogTracker() { override fun track(event: Event) { android.util.Log.d("Eventer", "$event") } } ``` -------------------------------- ### npm Install with Distribution Tag Source: https://eventer.premex.se/llms-full.txt Command to install the Eventer SDK using a distribution tag (e.g., 'latest') with npm. ```bash npm install @{ORGANISATION}/{PROJECT_ID}@latest ``` -------------------------------- ### npm Install Specific Version Source: https://eventer.premex.se/llms-full.txt Command to install a specific version of the Eventer SDK using npm. ```bash npm install @{ORGANISATION}/{PROJECT_ID}@1.2.3 ``` -------------------------------- ### Public Repositories Setup (Kotlin DSL) Source: https://eventer.premex.se/llms-full.txt Adds public Maven repositories in a Kotlin DSL settings script. ```kotlin repositories { maven { url = uri("https://artifacts.premex.se/api/maven/eventer/{REPOSITORY_ID}/") } } ``` -------------------------------- ### Public Repositories Setup (Groovy DSL) Source: https://eventer.premex.se/llms-full.txt Adds public Maven repositories in a Groovy DSL settings script. ```groovy repositories { maven { url "https://artifacts.premex.se/api/maven/eventer/{REPOSITORY_ID}/" } } ``` -------------------------------- ### Implementing a Firebase Tracker Source: https://eventer.premex.se/llms-full.txt Example implementation of a FirebaseTracker receiver. ```kotlin val firebaseTracker = object : FirebaseTracker() { override fun track(event: Event) { // Convert Eventer event to Firebase parameter bundle val bundle = createFirebaseBundle(event) FirebaseAnalytics.getInstance(context).logEvent(event.name, bundle) } private fun createFirebaseBundle(event: Event): Bundle { // Implementation to convert event properties to Firebase parameters // ... } } ``` -------------------------------- ### Android Project Repository Setup Source: https://eventer.premex.se/llms-full.txt Configures Maven repositories for an Android project. ```kotlin repositories { mavenCentral() maven { url = uri("https://artifacts.premex.se/api/maven/eventer/{REPOSITORY_ID}/") } } ``` -------------------------------- ### Tracking Events with Custom Properties Source: https://eventer.premex.se/llms-full.txt Example of tracking an event with multiple custom properties. ```kotlin tracker.track(PurchaseCompleted( itemId = "premium_subscription", price = 9.99, currency = "USD", quantity = 1 )) ``` -------------------------------- ### Mock Trackers for UI Testing Source: https://eventer.premex.se/llms-full.txt Example of creating a mock tracker for UI testing, which logs events for verification. ```swift class MockTracker: Tracker { var trackedEvents: [String: Any] = [: ] func track(_ event: Event) { trackedEvents[event.name] = event // Log to console for UI test verification print("EVENT_TRACKED: \(event.name)") } } // In your UI tests, you can check the console output // or use a shared file/UserDefaults to verify events ``` -------------------------------- ### Testing in iOS - Test Implementation Source: https://eventer.premex.se/llms-full.txt Example of creating a test implementation of a tracker for verifying tracking in unit tests. ```swift class TestTracker: Tracker { var events: [Event] = [] func track(_ event: Event) { events.append(event) } } // In your test func testEventTracking() { let testTracker = TestTracker() let subject = YourClass(tracker: testTracker) // Trigger tracking subject.doSomething() // Verify XCTAssertFalse(testTracker.events.isEmpty) if let event = testTracker.events.first as? ButtonClicked { XCTAssertEqual(event.id, "expected_button_id") } else { XCTFail("Expected ButtonClicked event") } } ``` -------------------------------- ### Using Generated Event Classes Source: https://eventer.premex.se/llms-full.txt Examples of tracking events using type-safe event classes generated by the SDK. ```kotlin // Import the generated events // Track events with proper type safety tracker.track(AppOpened(timestamp = System.currentTimeMillis())) tracker.track(ButtonClicked(id = "signup_button")) ``` -------------------------------- ### UIKit Integration - Dependency Injection Source: https://eventer.premex.se/llms-full.txt Example of using dependency injection to pass the tracker instance to UIKit view controllers. ```swift class HomeViewController: UIViewController { private let tracker: Tracker init(tracker: Tracker) { self.tracker = tracker super.init(nibName: nil, bundle: nil) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) tracker.track(ScreenViewed(screenName: "home")) } @objc func onButtonTap() { tracker.track(ButtonClicked(id: "feature_button")) } } ``` -------------------------------- ### Implementing a Firebase Tracker Source: https://eventer.premex.se/llms-full.txt Example implementation of a Firebase Tracker protocol, converting Eventer events to Firebase parameters. ```swift class FirebaseAnalyticsTracker: FirebaseTracker { func track(event: Event) { // Convert Eventer event to Firebase parameters var parameters: [String: Any] = [: ] for (key, value) in event.parameters { parameters[key] = value } // Log the event to Firebase Analytics.logEvent(event.name, parameters: parameters) } } ``` -------------------------------- ### Add Dependency after Public Repository Setup (Kotlin DSL) Source: https://eventer.premex.se/llms-full.txt Specifies the dependency after setting up public repositories in a Kotlin DSL build script. ```kotlin dependencies { implementation("se.premex.eventer.{ORGANISATION_ID}:{PROJECT_ID}:{PACKAGE_VERSION}") } ``` -------------------------------- ### Testing Event Tracking in Android Unit Tests Source: https://eventer.premex.se/llms-full.txt Example of a TestTracker implementation and its usage in verifying event tracking. ```kotlin // A test implementation that captures events class TestTracker : Tracker { val events = mutableListOf() override fun track(event: Event) { events.add(event) } } // In your test val testTracker = TestTracker() val subject = YourClass(testTracker) // Trigger tracking subject.doSomething() // Verify assert(testTracker.events.isNotEmpty()) assert(testTracker.events[0] is ButtonClicked) ``` -------------------------------- ### Using Predefined Enums for Authentication Methods Source: https://eventer.premex.se/llms-full.txt Example of tracking an event using predefined enum values for authentication methods. ```kotlin // Import the generated enum class from your SDK // Track an authentication event using the predefined enum value tracker.track(UserAuthenticated( userId = "user123", authMethod = AuthMethod.GOOGLE, // Using the enum constant successful = true )) ``` ```kotlin // Different authentication methods from your predefined enum tracker.track(UserAuthenticated( userId = "user456", authMethod = AuthMethod.APPLE, successful = true )) tracker.track(UserAuthenticated( userId = "user789", authMethod = AuthMethod.PASSWORD, successful = false, failureReason = "Invalid credentials" )) ``` -------------------------------- ### Add Dependency after Public Repository Setup (Groovy DSL) Source: https://eventer.premex.se/llms-full.txt Specifies the dependency after setting up public repositories in a Groovy DSL build script. ```groovy dependencies { implementation 'se.premex.eventer.{ORGANISATION_ID}:{PROJECT_ID}:{PACKAGE_VERSION}' } ``` -------------------------------- ### Tracking events with multiple properties Source: https://eventer.premex.se/llms-full.txt Example of tracking a purchase event with custom properties like itemId, price, currency, and quantity. ```swift tracker.track(PurchaseCompleted( itemId: "premium_subscription", price: 9.99, currency: "USD", quantity: 1 )) ``` -------------------------------- ### Initialize Eventer SDK with Trackers Source: https://eventer.premex.se/llms-full.txt Implement tracker protocols and initialize the Eventer SDK with all defined receivers. ```swift // IMPORTANT: You must implement ALL tracker protocols that were defined in the Eventer UI class LogTrackerImplementation: LogTracker { func track(event: Event) { print("Event tracked: \(event)") } } class FirebaseTrackerImplementation: FirebaseTracker { func track(event: Event) { // Your Firebase implementation // Example: // Analytics.logEvent(event.name, parameters: event.parameters) } } class MixpanelTrackerImplementation: MixpanelTracker { func track(event: Event) { // Your Mixpanel implementation // Example: // Mixpanel.mainInstance().track(event.name, properties: event.parameters) } } // Initialize the SDK with ALL tracker implementations // Eventer.initialize() requires ALL receivers defined in the Eventer UI let logTracker = LogTrackerImplementation() let firebaseTracker = FirebaseTrackerImplementation() let mixpanelTracker = MixpanelTrackerImplementation() let tracker = Eventer.initialize(logTracker: logTracker, firebaseTracker: firebaseTracker, mixpanelTracker: mixpanelTracker) ``` -------------------------------- ### Initializing with Multiple Trackers Source: https://eventer.premex.se/llms-full.txt Initialize the SDK with all defined trackers, as the API enforces providing all receivers. ```swift // ALL trackers that were defined in the Eventer UI must be provided here let tracker = Eventer.initialize( logTracker: ConsoleTracker(), firebaseTracker: FirebaseAnalyticsTracker(), mixpanelTracker: MixpanelTracker() ) ``` -------------------------------- ### Import Eventer Module Source: https://eventer.premex.se/llms-full.txt Create a new Swift file and try importing the Eventer module to verify integration. ```swift ``` -------------------------------- ### Maven Dependency Usage Source: https://eventer.premex.se/llms-full.txt Example of how to add an Eventer package as a dependency in a Maven project's pom.xml. ```xml se.premex.eventer.{ORGANISATION_ID} {PROJECT_ID} {PACKAGE_VERSION} ``` -------------------------------- ### VS Code (GitHub Copilot) Configuration Source: https://eventer.premex.se/docs/setting-up-eventer-mcp Add this to your project's .vscode/mcp.json file for VS Code with GitHub Copilot. ```json { "servers": { "eventer": { "type": "http", "url": "https://eventer.premex.se/api/mcp" } } } ``` -------------------------------- ### Build command Source: https://eventer.premex.se/llms-full.txt Command to build the project with the Eventer consumer plugin. ```bash ./gradlew build ``` -------------------------------- ### Basic SDK Integration - Setting Up the Tracker Source: https://eventer.premex.se/llms-full.txt This code snippet demonstrates how to set up the Tracker component for the Eventer Android SDK. It shows the implementation of multiple tracker interfaces (LogTracker, FirebaseTracker, MixpanelTracker) and how to initialize the Eventer SDK with these implementations. It's important to implement all tracker interfaces defined in the Eventer UI. ```kotlin object : LogTracker() { override fun track(event: Event) { android.util.Log.d("EventTracking", event.toString()) } } val firebaseTracker = object : FirebaseTracker() { override fun track(event: Event) { // Your Firebase implementation } } val mixpanelTracker = object : MixpanelTracker() { override fun track(event: Event) { // Your Mixpanel implementation } } // Initialize the SDK with ALL tracker implementations // Eventer.initialize() requires ALL receivers defined in the Eventer UI val tracker = Eventer.initialize(logTracker, firebaseTracker, mixpanelTracker) ``` -------------------------------- ### Cursor Configuration Source: https://eventer.premex.se/docs/setting-up-eventer-mcp Add this to your project's .cursor/mcp.json file for Cursor. ```json { "mcpServers": { "eventer": { "url": "https://eventer.premex.se/api/mcp" } } } ``` -------------------------------- ### Apply the plugin - build.gradle.kts Source: https://eventer.premex.se/llms-full.txt Applies the Eventer consumer plugin and configures customer and project IDs in build.gradle.kts. ```kotlin plugins { kotlin("jvm") version "2.2.10" id("se.premex.eventer.consumer") version "{PLUGIN_VERSION}" } eventerConsumer { customerId = "{ORGANISATION_ID}" projectId = "{PROJECT_ID}" } ``` -------------------------------- ### Event Routing Example Source: https://eventer.premex.se/ This is a conceptual representation of routing a 'signup_completed' event to multiple destinations: Mixpanel, Braze, and Segment. ```text signup_completed→MixpanelBrazeSegment ``` -------------------------------- ### SwiftUI Integration with Environment Source: https://eventer.premex.se/llms-full.txt Shows how to make the Event Tracker available throughout a SwiftUI application using the environment. ```swift // Create an environment key for the tracker struct EventTrackerKey: EnvironmentKey { static let defaultValue: Tracker? = nil } // Add a property to EnvironmentValues extension EnvironmentValues { var eventTracker: Tracker? { get { self[EventTrackerKey.self] } set { self[EventTrackerKey.self] = newValue } } } // In your app's entry point @main struct MyApp: App { // Initialize the tracker let tracker: Tracker = { // Set up your trackers... return Eventer.initialize( logTracker: ConsoleTracker(), firebaseTracker: FirebaseAnalyticsTracker(), mixpanelTracker: MixpanelTracker() ) }() var body: some Scene { WindowGroup { ContentView() .environment(\.eventTracker, tracker) } } } // Then in your views, use the environment to access the tracker struct ContentView: View { @Environment(\.eventTracker) private var tracker var body: some View { Button("Sign Up") { tracker?.track(ButtonClicked(id: "signup_button")) } } } ``` -------------------------------- ### UIKit Integration - Singleton Pattern Source: https://eventer.premex.se/llms-full.txt Demonstrates using the Singleton pattern for easy access to the tracker throughout a UIKit application. ```swift // AppTracker.swift class AppTracker { static let shared: Tracker = { // Initialize all your trackers here return Eventer.initialize( logTracker: ConsoleTracker(), firebaseTracker: FirebaseAnalyticsTracker(), mixpanelTracker: MixpanelTracker() ) }() } // Usage in any UIViewController AppTracker.shared.track(ButtonClicked(id: "login_button")) ``` -------------------------------- ### Maven Deploy Command Source: https://eventer.premex.se/llms-full.txt Command to deploy packages to an Eventer Maven repository. ```bash mvn deploy ``` -------------------------------- ### Claude Desktop Configuration Source: https://eventer.premex.se/docs/setting-up-eventer-mcp Add this to your Claude Desktop configuration (claude_desktop_config.json). ```json { "mcpServers": { "eventer": { "command": "npx", "args": ["mcp-remote", "https://eventer.premex.se/api/mcp"] } } } ``` -------------------------------- ### Maven Authentication (Kotlin DSL) Source: https://eventer.premex.se/llms-full.txt Adds repository credentials for Maven in a Kotlin DSL build script. ```kotlin maven { url = uri("https://artifacts.premex.se/api/maven/eventer/{REPOSITORY_ID}/") credentials { username = "token" password = "" } } ``` -------------------------------- ### Add XCFramework to Xcode Project (General) Source: https://eventer.premex.se/llms-full.txt Steps for manually integrating an XCFramework into an Xcode project. ```swift // No direct code snippet, but describes the process of dragging and dropping the .xcframework file into Xcode. // The following is a conceptual representation of the outcome in Xcode's project settings: // Target -> General Tab -> Frameworks, Libraries, and Embedded Content -> Add the .xcframework file // Ensure 'Embed & Sign' is selected for the framework. ``` -------------------------------- ### npm Authentication Configuration Source: https://eventer.premex.se/llms-full.txt Configuration for authenticating with the Eventer npm repository in .npmrc. ```ini //artifacts.premex.se/api/npm/eventer/{REPOSITORY_ID}/:_authToken= ``` -------------------------------- ### Claude Code Configuration Source: https://eventer.premex.se/docs/setting-up-eventer-mcp Add this to your project's .mcp.json file for Claude. ```json { "mcpServers": { "eventer": { "type": "http", "url": "https://eventer.premex.se/api/mcp" } } } ``` -------------------------------- ### Using Predefined Enums for Tracking Source: https://eventer.premex.se/llms-full.txt Demonstrates tracking an authentication event using predefined Swift enums generated from the Eventer UI. ```swift // Import the generated enum from your SDK // Track an authentication event using the predefined enum value tracker.track(UserAuthenticated( userId: "user123", authMethod: .google, // Using the enum case successful: true )) ``` ```swift // Different authentication methods from your predefined enum tracker.track(UserAuthenticated( userId: "user456", authMethod: .apple, successful: true )) tracker.track(UserAuthenticated( userId: "user789", authMethod: .password, successful: false, failureReason: "Invalid credentials" )) ``` -------------------------------- ### Maven Authentication (Groovy DSL) Source: https://eventer.premex.se/llms-full.txt Adds repository credentials for Maven in a Groovy DSL build script. ```groovy maven { url "https://artifacts.premex.se/api/maven/eventer/{REPOSITORY_ID}/" credentials { username = "token" password = "" } } ``` -------------------------------- ### Configure plugin resolution - settings.gradle.kts Source: https://eventer.premex.se/llms-full.txt Adds the Eventer Maven repository to pluginManagement in settings.gradle.kts. ```kotlin pluginManagement { repositories { gradlePluginPortal() mavenCentral() google() maven { url = uri("https://artifacts.premex.se/api/maven/eventer-internal/consumer-plugin/") credentials { username = "token" password = providers.gradleProperty("eventer.token").get() } } } } ``` -------------------------------- ### npm Per-project Repository Configuration Source: https://eventer.premex.se/llms-full.txt Configuration to set the Eventer npm registry for a specific project in .npmrc. ```ini registry=https://artifacts.premex.se/api/npm/eventer/{REPOSITORY_ID}/ ``` -------------------------------- ### VS Code (GitHub Copilot) MCP Configuration Source: https://eventer.premex.se/llms-full.txt Configuration for VS Code (GitHub Copilot) to use Eventer MCP. ```json { "servers": { "eventer": { "type": "http", "url": "https://eventer.premex.se/api/mcp" } } } ``` -------------------------------- ### Configure Scoped Package Registry Source: https://eventer.premex.se/llms-full.txt Sets up npm to use a specific registry for organization-specific packages. ```bash npm config set "@{ORGANISATION}:registry" https://artifacts.premex.se/api/npm/eventer/{REPOSITORY_ID}/ ```