Mobile SDK
Native iOS (Swift) and Android (Kotlin) client libraries, plus a React Native/Flutter wrapper, sharing the same event contract as the Web SDK.
High-Level Design
Mobile SDK carries the same contract into native app environments.
💼 Business Context
- Mobile is often the highest-engagement, highest-LTV channel for app-first businesses — instrumenting it well is a direct revenue lever
- Push-notification and in-app personalization use cases depend entirely on Mobile SDK data being complete and timely
- Owned by Mobile Engineering; requires app-store release cycles to update, unlike the Web SDK
🔌 Technical Overview
The Mobile SDK ships as native Swift (iOS) and Kotlin (Android) packages, with React Native and Flutter wrappers on top, all generated from the same contract as Cxos.Ingestion.Client. It auto-instruments screen views and app lifecycle events, persists an offline event queue (SQLite) for connectivity gaps, and syncs to Azure API Management when the device is online. Push token registration is a first-class event so the Activation API can target the device directly.
Auto-Captured
💾 SDK Initialization (Swift)
import CxosSDK
Cxos.initialize(
writeKey: "wk_live_9f21ac",
consentRequired: true
)
Cxos.track("product_viewed", properties: [
"product_id": "sku-1029",
"price": 2499
])
🔗 Integration Points
- Native Swift / Kotlin packages + React Native / Flutter wrappers
- Local SQLite-backed offline event queue with a Polly-equivalent retry policy on sync
- Azure API Management — HTTPS ingress once connectivity is available
- Push notification token registration feeding the Activation API's real-time channel
🧰 Services Consumed
- Owning microservice —
Cxos.Ingestion.Api(see the Full Application Service Map) - Database — Azure Cache for Redis (cache only)
⚠️ Non-Functional Considerations
- Scale: batched sync reduces battery/network impact on the device
- Latency: online devices sync within seconds; offline devices flush on reconnect
- Reliability: offline queue survives app kills/restarts; bounded size with oldest-event eviction to avoid unbounded growth
- Security/Privacy: consent state is checked before the SDK initializes any tracking, including crash/performance telemetry
🎯 Enterprise Example
A travel app instruments the Mobile SDK across its booking flow. When a user abandons a booking mid-flow while offline (e.g., in-flight), the event queues locally and syncs on landing — letting the Activation API trigger a timely 'complete your booking' push notification instead of losing the signal entirely.