capacitor-community/background-geolocation

background location is canceled

GerardoTovar opened this issue · 3 comments

Describe the bug
When I start the watch code on iOS everything works correctly but on Android When it runs to start in the background the location icon appears and then disappears

    this.plt.pause.subscribe( () => {// background
      // dont work on android
      this.bgGeoS.enable_bg_track()
    });

    this.plt.resume.subscribe(() => {// foreground
      this.bgGeoS.disable_bg_track()
    });

But if before sending the app to the background it already has the watch code initialized. works correctly
Maybe the way I want to abort this functionality is not correct. I tried to find out if there was a way to detect more before the platform goes into the background

To Reproduce
Just create a project and initialize the watch code just when it goes to the background

Expected behavior
initializing the watch code just when the platform goes to the background should work on android

Smartphone (please complete the following information):

  • Device: iphone 15, lenovo z6 , zuk z6
  • OS: IOS:latest , andorid 10 and 13

Additional context

  async enable_bg_track() {
    const callback = (position?: Location, error?: CallbackError) =>{
      this.last_location = position || undefined
      console.log(this.last_location);
      if(error) {
        console.error(error);
        if(this.idWatch) BackgroundGeolocation.removeWatcher({id:this.idWatch});
      }
    }
    const options: WatcherOptions = {
      requestPermissions: false, 
      stale: false,
      backgroundTitle: "Obteniendo tu ubicación",
      backgroundMessage: "Cancelar"
    }
    BackgroundGeolocation.addWatcher(options, callback).then((id)=> { this.idWatch = id }).catch(err =>{ console.error(err) });
  }

At the moment my solution is to activate tracking when I start the application. If anyone has any suggestions I would like to hear them.

I think believe this is a limitation of foreground services on Android. A foreground service can not usually be started from the background. https://developer.android.com/develop/background-work/services/foreground-services#background-start-restrictions

Please let me know if you find a solution.

Try inspecting the error log for this message:

Somewhat related to #86.