Skip to main content

Android SDK

sa.arsel:core and sa.arsel:push-fcm — events, identity and push notifications for Android. Events and identity work on a handset that has never granted notification permission, holds no FCM token, and has no Firebase on the classpath — only delivery needs push, which is why the two ship as separate modules.

Requirements

minSdk23
compileSdk / targetSdk35
Kotlin1.9+
FirebaseYour own project. firebase-messaging is provided by the host app.
For events onlyNo Firebase, no permission, no token needed

Install

dependencies {
implementation("sa.arsel:push-fcm:1.1.0") // pulls core transitively
implementation(platform("com.google.firebase:firebase-bom:<ver>"))
implementation("com.google.firebase:firebase-messaging") // your app owns the Firebase version
}

Firebase is compileOnly inside the SDK — it wraps Firebase rather than bundling it, so your app keeps control of its Firebase version. The FCM service, the notification-tap Activity, POST_NOTIFICATIONS and INTERNET are merged in from the SDK's manifests; the host adds nothing to its own manifest in the drop-in case.

For events only, depend on sa.arsel:core alone and skip Firebase entirely.

Initialize

// Application.onCreate()
Arsel.initialize(
this,
ArselConfig.Builder(clientKey = BuildConfig.ARSEL_CLIENT_KEY, baseUrl = "https://api.arsel.sa")
.defaultChannel("arsel_default", "Notifications")
.smallIcon(R.drawable.ic_stat_notify)
.build(),
)

Arsel.track("product.viewed", mapOf("sku" to "A-1023", "price" to 149.99))

// On login. Everything tracked beforehand merges onto this contact.
Arsel.identify(externalId = user.id)

clientKey is the organization's publishable pub_ key and is safe to compile into an APK. Your secret be_ API key is not — anyone can unzip an APK. See Authentication.

Push setup on the Arsel side — your Firebase project and the service-account JSON you upload — is covered in Setting up push.

Full documentation

The SDK's own repository is the reference, and it is versioned with the artifact you resolve — BasicsEngage/arsel-android-sdk, MIT licensed.

EventsCustom events, properties, limits, sessions, durability
IdentityAnonymous → identified, merges, reset() vs optOut()
Push notificationsChannels, icons, permission, actions, deep links, engagement
API referenceEvery method: signature, arguments, threading
TroubleshootingSymptom → cause → fix, including OEM-specific ones
Data safetyWhat the SDK collects, and how to fill in Play's form
Wire referenceThe endpoints and payloads the SDK speaks
Migrating from CleverTapCall-by-call mapping
Changelog

A runnable end-to-end example lives in sample/, which resolves the published artifact exactly as your app would.