Native SDK (KMP → Android & iOS)
activeThe Binoban Native SDK is a single Kotlin Multiplatform (KMP) core, compiled and shipped as two outputs: an Android library (via Maven Central) and an iOS framework (via Swift Package Manager or CocoaPods, distributed as an XCFramework). Both platforms share the same tracking model, configuration, and method names — so the concepts on this page apply to both, and the platform pages cover the install and language specifics.
apiHost is requiredThe Native SDK does not ship with a built-in default host, on either platform.
You always set apiHost explicitly — your cloud host, or your own deployment's host
for on-prem and air-gapped installs. If it is blank, the SDK initializes in a
disabled (no-op) state and sends nothing.
Pick your platform
- Android SDK — Gradle install,
Applicationsetup, and Android lifecycle/push specifics. - iOS SDK — Swift Package Manager (or CocoaPods) install and Swift setup.
- React Native bridge — a thin wrapper over these native outputs (not a standalone SDK).
New to the Native SDK? Start with the Native SDK quickstart — Android · iOS — for the fastest path to a first event, then return here for the full surface.
Shared concepts
These hold on both Android and iOS:
- Credentials. Construct the client with
apiKeyandsourceIdentifierfrom your workspace, plus the requiredapiHost. - Identity. The SDK assigns an
anonymousIdautomatically and persists it. You set auserIdwithidentify; whencollectDeviceIdis enabled the SDK also tracks adeviceId. See Identity strategy. - Batching & flush. Events are queued and sent in batches — by default after
flushAtevents (20) or everyflushIntervalseconds (30). Callflush()to send immediately. - Lifecycle. The SDK auto-tracks application lifecycle events
(
trackApplicationLifecycleEvents). - Deep links. Android can track the links that launch your app, but this is
opt-in: add
AndroidDeepLinkPluginyourself. See deep-link tracking. Not available on iOS or React Native. - Push. Both platforms receive Engage push through Firebase Cloud Messaging. The SDK displays the notification and reports delivery, clicks, and dismissals; your app forwards the incoming message to it. The platform entry points differ — see App push.
Method surface
The KMP core exposes these tracking methods to consumers:
| Method | Purpose |
|---|---|
identify(userId, traits) | Associate the current person with your user ID and traits. |
track(name, properties) | Record an action the user took. |
flush() | Send queued events immediately. |
reset() | Clear userId/traits and start a new anonymousId (call on logout). |
anonymousId() / userId() / deviceId() / traits() | Read the current identity. |
enabled | Pause/resume all tracking. |
setDeviceToken(token) | Register the FCM push token through a live instance, and stamp it on later events. |
Notification.refreshToken(token) | Register the FCM push token with no live instance required — the background/cold-start path. |
Notification.initialize(config) | Configure the notification layer (icon and channel on Android; permission and sound on iOS). |
Notification.notify(data) | Display an incoming Binoban push. Non-Binoban payloads are ignored. |
Exact argument shapes are language-specific — see the Android and iOS pages.
On iOS the notification entry points are not methods on your Binoban instance —
call them on BinobanNotifications.shared (initializeNotifications, onNewToken,
onApplicationDidReceiveRemoteNotification, onWillPresentForwarded,
onDidReceiveForwarded). See the iOS SDK page.
screen(), group(), and alias() exist in the underlying KMP core but are marked
internal — they are not available on Android, iOS, or React Native in this
release.
Distribution
- Android — Maven Central:
io.binoban.sdk:sdk-android. - iOS — Swift Package Manager (primary) or CocoaPods (
pod 'binoban'), distributed as an XCFramework binary.
Check the SDK compatibility matrix for the current version and per-platform status.