web-dev-qa-db-fra.com

géolocalisation de fond ionique 3 non mise à jour

Le plugin de géolocalisation de fond pour ionic ne se met pas à jour. La fonctionnalité que je veux, c'est que toutes les 30 secondes, demandez au plug-in une valeur de lat lng si elle est disponible. Le problème est que cela ne fait que me donner les valeurs au départ puis l'arrière-plan s'arrête. Le premier plan est bien, c'est vraiment le fond. En gros, je ne peux pas envoyer les demandes après le premier envoi en arrière-plan.

gps.ts

startTracking() {

    console.log('started tracking')
    const config: BackgroundGeolocationConfig = {
      desiredAccuracy: 10,
      stationaryRadius: 20,
      distanceFilter: 30,
      debug: false, //  enable this hear sounds for background-geolocation life-cycle.
      stopOnTerminate: false
    };

    this.backgroundGeolocation.configure(config)
    .subscribe((location: BackgroundGeolocationResponse) => {


      this.zone.run(() => {
        this.lat = location.latitude
        this.lng = location.longitude
        this.bearing = location.bearing
        this.speed = location.speed
        this.accuracy = location.accuracy
        this.timestamp = location.time
      })


      this.backgroundGeolocation.finish(); // FOR IOS ONLY
      this.backgroundGeolocation.stop()

      });


  this.backgroundGeolocation.start();

  }

sendGPS(){
this.optionsService.sendGPS(gpsData).subscribe(result => {
          }
        })
}

stopTracking() {

   this.sendGPS()
}

app.component.ts

constructor(){
 this.sendGPSStart()
 this.interval()
}

sendGPSStart(){
    this.locationTracker.startTracking();
  }

  sendGPSStop(){
    this.locationTracker.stopTracking();
}

interval(){
setInterval(() => {
       this.sendGPSStart()
          this.sendGPSStop()
    }, '30000')

}
13
userlkjsflkdsvm

En regardant des exemples, par exemple, dnchia/Ionic3-Background-Geolocation , vous configureriez l'intervalle sur l'arrière-plan, ainsi que l'envoi périodique au premier plan

gps.ts

startTracking(interval) {

    console.log('started tracking')
    const config: BackgroundGeolocationConfig = {
      desiredAccuracy: 10,
      stationaryRadius: 20,
      distanceFilter: 30,
      debug: false, //  enable this hear sounds for background-geolocation life-cycle.
      stopOnTerminate: false,
      interval: interval
    };

app.component.ts

interval = 30000;

constructor() {
  this.sendGPSStart()
  this.interval()
}

sendGPSStart(){
  this.locationTracker.startTracking(this.interval);
}

sendGPSStop(){
  this.locationTracker.stopTracking();
}

interval() {
  setInterval(() => {
    this.locationTracker.sendGPS();
  }, this.interval)

}
1
Richard Matsen

Il y a actuellement des rapports de bugs à ce sujet sur les projets github:

Voir: https://github.com/transistorsoft/cordova-background-geolocation-lt/issues/548 Et https://github.com/transistorsoft/cordova -background-geolocation-lt/issues/539

Le créateur du projet suggère de supprimer le plug-in de l'écran de démarrage (cordova-plugin-splashscreen)

0
alpere

J'utilisais le plugin et après quelques lectures, je crois que le beaviour 

Vous devez d'abord supprimer la ligne

this.backgroundGeolocation.stop()

du code.

Deuxièmement, le plug-in de géolocalisation en arrière-plan en raison de restrictions IOS (et Android) n'est pas exécuté à tout moment, mais uniquement lorsqu'un événement 'Antena a changé' se produit. essayez d'appliquer ces modifications, comme je l'ai dit, allumez le débogage, et faites un tour en voiture juste pour tester

0
João Mourão