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')
}
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)
}
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)
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