I have used mauron85/react-native-background-geolocation for tracking the location of the user on my react native app. It is working fine while the app is on fore ground. The location is exact on regular interval. But if the app goes to background, the location is not the same, rather is moved from the previous location even though the device is not moved. Following is my configuration -
BackgroundGeolocation.configure({ desiredAccuracy: BackgroundGeolocation.HIGH_ACCURACY, notificationTitle: 'Background tracking', notificationText: 'enabled', debug: false, startOnBoot: false, stopOnTerminate: false, locationProvider: BackgroundGeolocation.ACTIVITY_PROVIDER, interval: 40000, fastestInterval: 5000, activitiesInterval: 10000, stopOnStillActivity: false, url: 'http://192.168.81.15:3000/location', httpHeaders: { 'X-FOO': 'bar' }, // customize post properties postTemplate: { lat: '@latitude', lon: '@longitude', foo: 'bar' // you can also add your own properties } });
What should I do to fix this issue?
1 Answers
Answers 1
According the documentation, the location provider you are using BackgroundGeolocation.ACTIVITY_PROVIDER
is better suited as a foreground location provider:
ACTIVITY_PROVIDER:
This one is best to use as foreground location provider (but works in background as well). It uses Android FusedLocationProviderApi and ActivityRecognitionApi for maximum battery saving.
So I would try to use DISTANCE_FILTER_PROVIDER
instead:
BackgroundGeolocation.configure({ locationProvider: BackgroundGeolocation.DISTANCE_FILTER_PROVIDER });
This provider seems to be better suited to be used as a background location provider:
DISTANCE_FILTER_PROVIDER
It's best to use this one as background location provider. It is using Stationary API and elastic distance filter to achieve optimal battery and data usage.
Source:
https://github.com/mauron85/react-native-background-geolocation/blob/master/PROVIDERS.md