The Pulsate Android SDK connects your customers' devices to the Pulsate platform. Installation takes about 5 minutes.
Requirements: PulsateSDK 4.8.4 supports Android API 28–36 (minSdk 28, targetSdk/compileSdk 36) and Java 17.
Step 1 — Add the dependency
The SDK is published on Maven Central. Make sure mavenCentral() is in your repositories:
// settings.gradle
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
Add the SDK to your app module:
dependencies {
implementation 'com.pulsatehq.sdk:PulsateSdk:4.8.4'
}
All published versions are listed in the Release Notes and on Maven Central.
Step 2 — Configure your build
Your app must meet these build settings:
android {
compileSdk 36
defaultConfig {
minSdkVersion 28
targetSdkVersion 36
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
}
Use Android Gradle Plugin 8.12.3 or newer.
Google Play Services & Firebase
The SDK depends on these Google libraries (pulled in transitively — you only need to declare them yourself if you want to align versions):
implementation "com.google.android.gms:play-services-location:21.3.0"
implementation "com.google.android.gms:play-services-maps:19.0.0"
implementation 'com.google.maps.android:android-maps-utils:3.9.0'
implementation platform('com.google.firebase:firebase-bom:34.3.0')
implementation 'com.google.firebase:firebase-messaging'
implementation 'com.google.firebase:firebase-storage'
The full dependency list is on the Dependencies page.
Step 3 — Set your App ID and App Key
Your credentials are in the Pulsate CMS under Settings → App Settings → SDK Connect. Both are 64-character strings.
Option A — AndroidManifest.xml (the SDK picks them up automatically):
<application>
<meta-data
android:name="PulsateAppId"
android:value="YOUR_64_CHAR_APP_ID" />
<meta-data
android:name="PulsateAppKey"
android:value="YOUR_64_CHAR_APP_KEY" />
</application>
Option B — in code (e.g. if you switch environments at runtime):
val authData = PulsateAuthData("YOUR_64_CHAR_APP_ID", "YOUR_64_CHAR_APP_KEY")
val pulsateManager = PulsateFactory.getInstance(authData)
PulsateAuthDatavalidates that both values are exactly 64 characters and throws if they are not.PulsateFactory.getInstance(authData)returnsnullif either value is empty or contains spaces.
Step 4 — Manifest merger (only if you override merge strategy)
The SDK ships its own AndroidManifest.xml, which Gradle merges into your app automatically — including required permissions (INTERNET, ACCESS_NETWORK_STATE, location permissions, POST_NOTIFICATIONS, etc.), the Pulsate content provider, receivers, and the FCM service.
If you use tools:node="replace" or otherwise override the merger, you must add the SDK's manifest entries manually — contact Pulsate support for the current full list, or inspect the SDK's merged manifest in Android Studio (Merged Manifest tab).
Note: the SDK declares location permissions in its manifest. If your app does not use geofencing and you want to remove them from your final APK, use
tools:node="remove"on the specific permissions.

