J'ai une application qui suit continuellement l'emplacement de l'appareil en arrière-plan . Cela fonctionnait plutôt bien sous iOS 11.4, où je pouvais laisser exécuter l'application en arrière-plan pendant des jours tout en effectuant d'autres tâches à l'avant-plan.
Désormais, avec l'application iOS 12, l'application cesse de s'exécuter après un certain temps, lorsque l'appareil est laissé seul.
LocationManager est initialisé comme suit:
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
locationManager.startUpdatingHeading()
locationManager.allowsBackgroundLocationUpdates = false
locationManager.pausesLocationUpdatesAutomatically = false
if #available(iOS 11.0, *)
{
locationManager.showsBackgroundLocationIndicator = true
}
locationManager.distanceFilter = prefs.getDoubleFromString(Prefs.PREF_DISTANCE_FILTER, defaultVal: 2.5)
Lorsque l'utilisateur décide de commencer le suivi
locationManager.allowsBackgroundLocationUpdates = true
est réglé.
L'application dispose du privilège "Toujours" pour le service de localisation.
Une idée de ce qui a changé dans iOS 12?
Cela semble être un bug depuis iOS 12 que les applications seront terminées en arrière-plan sans raison valable. J'ai rempli un rapport de bogue.
Voir pour plus d'informations et un projet de démonstration pour illustrer le problème ici: iOS 12 ferme les applications en arrière-plan sans raison
Bug corrigé dans iOS 12.2 beta 2 (16E5191d)
J'ai cette question aussi, et j'essaie d'éteindre le "Ne pas déranger" la nuit dernière, le service de localisation en arrière-plan fonctionne bien.
Ainsi, le mode "Ne pas déranger" peut arrêter le service de localisation?
N'importe quel autre moyen d'éviter l'arrêt du service de localisation, sauf désactiver "Ne pas déranger"?