Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

background location is canceled #117

Open
GerardoTovar opened this issue Jun 25, 2024 · 3 comments
Open

background location is canceled #117

GerardoTovar opened this issue Jun 25, 2024 · 3 comments

Comments

@GerardoTovar
Copy link

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.

@diachedelic
Copy link
Collaborator

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.

@diachedelic
Copy link
Collaborator

Try inspecting the error log for this message:

@diachedelic
Copy link
Collaborator

Somewhat related to #86.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants