Год назад я выпустил приложение для гольфа на основе GPS.Чтобы наилучшим образом использовать его, необходима высокая точность по горизонтали.Со времени выхода приложения все работало нормально (iOS 10 была последней версией операционной системы в то время).Теперь клиенты сообщают о плохой точности с iOS12 в основном в сочетании с iPhone X производными.
Мне удалось восстановить проблему на моих устройствах разработки.На iPhone X горизонтальная точность <5 м больше недостижима.Был не проблема раньше.На iPhone 6s этот уровень точности достигается в редких случаях.На обоих устройствах была установлена iOS 12.2.</p>
Вот соответствующий код в моем приложении:
Определение переменной в классе:
var locationManager: CLLocationManager = CLLocationManager()
В представлении загружена ли я поставил:
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()
Тогда der - это следующая функция для определения местоположения (latestLocation), которое обрабатывается в коде (здесь не показан):
func locationManager(_ manager: CLLocationManager,
didUpdateLocations locations: [CLLocation])
{
let latestLocation: CLLocation = locations[locations.count - 1]
horizontalAccuracy.text = String(format: "%.1f",latestLocation.horizontalAccuracy)
if latestLocation.horizontalAccuracy <= 5.1 {
horizontalDistance.backgroundColor = UIColor.green
} else if latestLocation.horizontalAccuracy <= 10.1 {
horizontalDistance.backgroundColor = UIColor.yellow
} else {
horizontalDistance.backgroundColor = UIColor.red
}
// remark: this sets the background color of a label according to achieved horizontal accuracy. Since iOS12 the maximum achieved level of accuracy with an iPhoneX is medium (yellow background color).
/*
Some code processing location data
*/
}
Обычно код выполняется, как и ожидалось, но на основе низкого уровня.точность данных.Что-то пропущено в iOS 12 или есть способ повысить точность?Спасибо за вашу помощь!