我正在编写一个应用程序,每次手机移动时都必须进行一些计算。我已经在这里阅读了所有问题,但无法使用Accelerometer在后台收集数据(在用户离开应用程序之后)。我在Location updates
中设置了Plist.info
标记。这是我使用的代码:
let motionManager = CMMotionManager()
func startMotionUpdates() {
var timestamps = [NSDate]()
if motionManager.accelerometerAvailable {
motionManager.accelerometerUpdateInterval = 1
motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue(), withHandler: { (data: CMAccelerometerData?, error: NSError?) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
let time = NSDate(timeIntervalSince1970: data!.timestamp)
timestamps.append(time)
print(timestamps)
})
})
}
}
我尝试了所有组合,我尝试使用CMDeviceMotion
,我尝试使用CLLocationManager.startUpdatingLocation()
来模拟背景活动,但没有任何效果。有人有什么想法吗?
答案 0 :(得分:0)
每次加速计改变时都无法唤醒。只要设备的位置使用CLLocationManager
显着变化(至少几米),您就可以被唤醒,这就是" location"表示在后台模式中。
要跟踪更细粒度的运动信息,您需要让系统使用CMSensorRecorder
开始记录数据,然后您可以询问数据并计算您想要的数据。但是你不会被允许在后台继续观看设备的每一个微动。这会耗费太多电池。
另请参阅CMPedometer
,它更直接地解决了某些用例。