Skip to content

Location Updates & Geofencing

Pulsate can trigger campaigns when users enter, dwell in, or exit geofences defined in the CMS. This requires location permissions (next page) and location updates being enabled.

Location updates are enabled by default (they still do nothing until the user grants location permission). To let users opt out of Pulsate location tracking:

val pulsateManager = PulsateFactory.getInstance()
pulsateManager.setLocationUpdatesEnabled(true) // opt in (default)
pulsateManager.setLocationUpdatesEnabled(false) // opt out — stops geofencing

Read the current state:

pulsateManager.isLocationUpdatesEnabled(object : IPulsateValueListener<Boolean> {
override fun onSuccess(value: Boolean) { /* ... */ }
override fun onError(e: Throwable) { }
})
// or, from a coroutine:
val enabled: Boolean? = pulsateManager.isLocationUpdatesEnabled()

Register a listener to receive the raw enter/dwell/exit events Pulsate processes:

com.google.android.gms.location.GeofencingEvent
pulsateManager.setGeofenceListener(object : IPulsateGeofenceListener {
override fun onTrigger(geofencingEvent: GeofencingEvent?) {
// inspect transition type, triggering geofences, location...
}
})
pulsateManager.getLastKnownLocation(object : IPulsateValueListener<Location> {
override fun onSuccess(value: Location) { /* android.location.Location */ }
override fun onError(e: Throwable) { }
})