我正在寻找一种方法,当应用程序在后台运行或另一应用程序在前台运行时,每隔10分钟左右获取一次气压数据(而非海拔高度)。这可能吗?如果可以,怎么办?
如果没有,那么Pressur之类的应用如何工作?
答案 0 :(得分:0)
Core Motion为您提供CMAltimeter。 CMAltimeter为您提供CMAltitudeData。 CMAltitudeData给您pressure
。
(在后台运行是另一回事;您不能仅为了使用Core Motion而在后台运行,因此您必须找到其他在后台运行的原因。)
答案 1 :(得分:0)
为了接收后台 CoreMotion
更新,您需要做几件事,但归结为在后台运行 CoreLocation
。 CoreMotion 不会自行在后台运行。
Info.plist
隐私字符串请求授权(“Location Always and When In Use” 和 “Location When In Use”) let locationManager = CLLocationManager()
let motionManager = CMMotionManager() // Not required in this case
let altimeter = CMAltimeter()
allowsBackgroundLocationUpdates
设置为 trueCMAltimeter
实例,例如:if CMAltimeter.isRelativeAltitudeAvailable() {
altimeter.startRelativeAltitudeUpdates(to: OperationQueue.main) { (data, error) in
/* Handle Altitude changes here */
}
}
与其他传感器(例如 motionManager.gyroUpdateInterval
)不同,您似乎无法控制调用的频率;您可以根据需要对值进行平均或舍弃。
我有一个简单的后台传感器数据收集演示(越来越少)in a repo here。