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
minSdk | 23 |
compileSdk / targetSdk | 35 |
| Kotlin | 1.9+ |
| Firebase | Your own project. firebase-messaging is provided by the host app. |
| For events only | No 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.
| Events | Custom events, properties, limits, sessions, durability |
| Identity | Anonymous → identified, merges, reset() vs optOut() |
| Push notifications | Channels, icons, permission, actions, deep links, engagement |
| API reference | Every method: signature, arguments, threading |
| Troubleshooting | Symptom → cause → fix, including OEM-specific ones |
| Data safety | What the SDK collects, and how to fill in Play's form |
| Wire reference | The endpoints and payloads the SDK speaks |
| Migrating from CleverTap | Call-by-call mapping |
| Changelog |
A runnable end-to-end example lives in sample/, which resolves the published artifact exactly as your app would.