Je construis une application pour iOS qui doit savoir quand l'utilisateur se trouve dans une plage de 20 à 30 mètres de sa maison.Les mises à jour de localisation s'arrêtent en arrière-plan - iOS
Je geofence utilisateur pour déclencher un événement lorsque l'utilisateur est à 500m de leur domicile, puis j'utilise CLLocationManager pour commencer à suivre l'emplacement réel et vérifier la distance de leur domicile. Mon problème est que lorsque j'appelle "startUpdatingLocation" de mon événement geofence alors que l'application est en arrière-plan, il ne fonctionne que pendant 20 secondes, puis arrête de donner des rappels. Si je, après les 20 secondes ont passé l'application ouverte et le remet à l'arrière-plan, puis il continue à me donner des rappels jusqu'à ce que je l'arrête. Si j'appelle "startUpdatingLocation" pendant que l'application est en cours d'exécution et la met ensuite en arrière-plan, elle continue de fonctionner comme elle le devrait.
Mon code d'initialisation ressemble à ceci:
init(config: AutounlockConfiguration) {
super.init()
self.config = config
self.locationManager = CLLocationManager()
self.locationManager.requestAlwaysAuthorization()
self.locationManager.requestWhenInUseAuthorization()
self.locationManager.delegate = self
self.locationManager.pausesLocationUpdatesAutomatically = false
self.locationManager.allowsBackgroundLocationUpdates = true
self.locationManager.activityType = .automotiveNavigation
self.locationManager.distanceFilter = kCLDistanceFilterNone
self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
}
et quand je commence lieu la mise à jour je le fais comme ceci:
func startFetchingUserLocation() {
if (!isFetchingLocation) {
isFetchingLocation = true
DanaDebugger.presentDebugPushMessage(message: "fetching new location")
locationManager.startUpdatingLocation()
}
}
J'ai activé le mode d'arrière-plan pour l'emplacement, et inclus la NSLocationAlwaysUsageDescription dans mon fichier info.plist. Je n'ai vraiment aucune idée d'où aller, j'espère que quelqu'un sera capable de m'aider.
Ou utiliser les deux; vous pouvez activer des changements de position significatifs au premier plan. Cela vous permettra alors d'appeler 'startUpdatingLocation' en arrière-plan lorsque vous êtes dans le geofence et d'obtenir des mises à jour continuelles. – Paulw11
Merci beaucoup! C'était exactement la réponse dont j'avais besoin! Fonctionne parfaitement maintenant. –