Свойство speed
CLLocation
, которое возвращается в методе CLLocationManager
didUpdateLocations
, кажется выше на некоторых моделях автомобилей, когда CarPlay подключается.
Это не относится к поддержке CarPlay Navigation в приложении, поскольку демо-проект может воспроизвести проблему без поддержки CarPlay.
Конкретные модели автомобилей, на которых это подтверждено:
- Volvo XC90
- Ford Transit с синхронизацией 3
- Модель Renault Megane IV2018 с Rlink2 и последней прошивкой
- Станция Opel Astra (2018)
- Ford Focus 2017
- Opel Astra (модель K, 2017) - получает половину скорости GPS
Пример разницы:
- Автомобильный спидометр: 120 км / ч
- Скорость GPS от
didUpdateLocations
: 115 км/ ч - Скорость GPS от
didUpdateLocations
с подключенным CarPlay на одной из этих моделей автомобилей: 130 км / ч
Здесь вы можете найтиДемонстрационный проект (с использованием языка NL), который воспроизводит проблему: https://github.com/flitsmeister/carplay-speed-problem
Соответствующая часть:
override private init() {
super.init()
// These settings mimick the settings we have in our production app
locationManager.requestAlwaysAuthorization()
locationManager.delegate = self
locationManager.allowsBackgroundLocationUpdates = true
locationManager.activityType = .automotiveNavigation
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.distanceFilter = kCLDistanceFilterNone
}
func startLocating() {
locationManager.startUpdatingLocation()
}
func stopLocating() {
locationManager.stopUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard lastLocation = locations.first else {
return
}
print(lastLocation.speed) // This property is higher when connected to CarPlay
}