#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
свойство).
Это не задокументировано и не имеет смысла, но так оно и работает.