Скорость CLLocation, связанная с CarPlay, выше, чем без CarPlay, на некоторых моделях автомобилей - PullRequest
1 голос
/ 02 апреля 2019

Свойство 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
}
...