# Location Data

MBAudience let you track and target user based on their location. Location is sent to MBurger only if it's distant at least 100m from the last location seen by the SDK.

To start monitoring for location changes call, it will continue monitoring until the stop method is called:

```dart
MBAudience.startLocationUpdates();
```

To stop monitoring location changes you have to call:

```dart
MBAudience.stopLocationUpdates();
```

If you want to implement your location logic yoou can always tell `MBAudience` location data with:

```dart
MBAudience.setCurrentLocation(latitude, longitude);
```

**iOS**

The framework uses the method [startMonitoringSignificantLocationChanges](https://developer.apple.com/documentation/corelocation/cllocationmanager/1423531-startmonitoringsignificantlocati) of the CoreLocation manager with an accuracy of `kCLLocationAccuracyHundredMeters`. To start monitoring for location changes call, it will continue monitoring until the stop method is called:

**Android**

MBAudience let you track and target user based on their location, the framework uses a foreground `FusedLocationProviderClient` with priority `PRIORITY_BALANCED_POWER_ACCURACY` which is killed the moment the app goes in background. If you wish to track user position while app is in background you need to implement your own location service, then when you have a new location you can use this API to send it to the framework: `setCurrentLocation(latitude, longitude)`
