Installing the Pulsate SDK
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
Section titled “Step 1 — Add the dependency”The SDK is published on Maven Central. Make sure mavenCentral() is in your repositories:
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
Section titled “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
Section titled “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
Section titled “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)
Section titled “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.

