capacitor-community/background-geolocation

AddWatcher only retrieves location once

GonzaloCorchon opened this issue · 3 comments

Hi,

I'm building an Ionic 7 app (Angular) for Android. I'm testing on a POCO X3 PRO with Android 12.
For some reason, after adding a watcher the plugin only calls once the callback, even with the app in foreground mode.
The GPS notification icon is present on the toolbar all the time and I don't remove the watcher until my component is destroyed.
Using an interval timer I can call the addWatcher/removeWatcher and get the current location every few seconds, but I think this is not the way it's meant to be. Using an interval timer also stops retrieving location after a few minutes when the app is in background mode.

I have also set the application location permission to be always allowed.

My code is basically the same as the one exposed in the README.md.

BackgroundGeolocation.addWatcher({ 
  backgroundMessage: "Cancel to prevent battery drain.",
  backgroundTitle: "Tracking You.",
  requestPermissions: true,
  stale: false,
  distanceFilter: 50 }, 
  (position?:Location, error?:CallbackError) => {
	if(error?.code === "NOT_AUTHORIZED") {
	  if(confirm("GPS permission required for a full experience")){
		BackgroundGeolocation.openSettings();
		return;
	  }
	}
	console.log(position);
}).then( callbackId => {
  this.callbackId = callbackId;
});

Currently I have this permissions in the AndroidManifest.xml file

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
    <uses-feature android:name="android.hardware.location.gps" />

Is there somehting I am missing?

Thank you!

I see you have the distance filter set to 50 metres. You will only receive a new location after travelling 50 metres from the previous one. Does that answer your question?

Yes my friend, I have just gone for a long walk and it works perfectly. It was my fault.

OK, good stuff.