Skip to main content
Track user location to enable location-based messaging.

Add Permissions

Add location permissions to AndroidManifest.xml:
<manifest>
    <!-- For foreground location -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

    <!-- For background location (optional, Android 10+) -->
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
</manifest>

Request Location Permission

import android.Manifest
import androidx.activity.result.contract.ActivityResultContracts

class MainActivity : AppCompatActivity() {

    private val requestLocationPermission = registerForActivityResult(
        ActivityResultContracts.RequestMultiplePermissions()
    ) { permissions ->
        when {
            permissions[Manifest.permission.ACCESS_FINE_LOCATION] == true -> {
                // Precise location granted
            }
            permissions[Manifest.permission.ACCESS_COARSE_LOCATION] == true -> {
                // Approximate location granted
            }
            else -> {
                // Location permission denied
            }
        }
    }

    private fun requestLocationPermission() {
        requestLocationPermission.launch(arrayOf(
            Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.ACCESS_COARSE_LOCATION
        ))
    }
}

Initialize Location Module

import com.zixflow.location.ModuleLocation

val builder = ZixflowConfigBuilder(this, "YOUR_API_KEY")
    .addModule(ModuleLocation())
    .build()

Zixflow.initialize(builder)

Manual Location Update

import android.location.Location

// Set last known location
val location: Location = ... // Get from LocationManager or FusedLocationProvider
Zixflow.instance().setLastKnownLocation(location)