我的应用程序使用 iOS (iPhone) 上 CMAltimeter 的气压数据。这一直运作得很好。但安装 iOS 17.4 后,它就停止工作了。其他使用气压数据的应用程序也停止工作。所以这似乎是 iOS 17.4 的一个重大错误。
下面是用于测试这一点的(Swift)代码。此代码过去在 iOS 的早期版本中运行良好,但在 17.4 中,
authorizationStatus()
返回 .restricted
,并且调用处理程序时出现错误:
The operation couldn’t be completed. (CMErrorDomain error 105.)
这都表明存在一些身份验证失败。我已向 Apple 记录了错误报告。
但我想知道其他人是否也经历过同样的情况,以及是否有一些解决方法/解决方案可以使气压数据再次可用。
if CMAltimeter.isRelativeAltitudeAvailable() {
status = CMAltimeter.authorizationStatus()
self.altimeter.startRelativeAltitudeUpdates(to: OperationQueue.main) { (data, _error) in
DispatchQueue.main.async {
error = _error != nil ? _error!.localizedDescription : "<nil>"
print(error)
pressure = data != nil ? String(format: "%f", data!.pressure.doubleValue) : ""
}
}
}
PS: Core Motion 的文档(其中
CMAltimeter
是其中的一部分)说,需要为所有 Core Motion 服务定义 NSMotionUsageDescription
.info.plist
属性。我有该属性,但它似乎没有什么区别。
您已在清单上添加了权限,但仍需要触发运动和健身权限。您可以通过记录传感器数据 0.1 秒来做到这一点:
let recorder = CMSensorRecorder()
recorder.recordAccelerometer(forDuration: 0.1)