WatchKit: Высотомер на часах возвращает высоту iPhone (не часы)

#ios #watch #core-motion

Вопрос:

Я хочу получить относительное изменение высоты часов. Когда часы подключены к iPhone, часы возвращают относительную высоту iPhone. Как я могу заставить часы вернуть свою собственную высоту, даже если к ним подключен iPhone.

Вот мой код:

 func startAltimeter() {  if CMAltimeter.isRelativeAltitudeAvailable() {  switch CMAltimeter.authorizationStatus() {  case .notDetermined: // Handle state before user prompt  print("*******************Motion permission is not determined")  case .restricted: // Handle system-wide restriction  fatalError("Authorization restricted!")  case .denied: // Handle user denied state  fatalError("Authorization denied!")  case .authorized: // Ready to go!  let _ = print("Authorized!")  @unknown default:  fatalError("Unknown Authorization Status")  }  self.altimeter.startRelativeAltitudeUpdates(to: OperationQueue.main) {(data,error) in  DispatchQueue.main.async {  self.relativeAlt = data?.relativeAltitude.doubleValue ?? 0.0  print("relative alttitude = (self.relativeAlt) m")  }  }  } else {  DispatchQueue.main.async {  self.relativeAlt = -99  }  }  }  

Ответ №1:

Оказывается, что relativeAltitude.doubleValue используется барометр iPhone, если iPhone сопряжен с часами. Чтобы получить высоту непосредственно с датчика часов, необходимо использовать абсолютную высоту ( altitude свойство).

Это не задокументировано и не имеет смысла, но так оно и работает.