我需要使用Core Motion在后台获取用户活动。我能够通过将位置更新添加为后台模式并启用后台位置获取来实现这一目标。但由于我对用户位置不感兴趣,这会导致电池浪费和蓝色标志(iPhone X(,表明该应用程序正在后台更新您的位置。
是否可以在不更新用户位置的情况下在后台运行核心运动,以便使用更少的电池并且不向用户显示蓝色标志?
提前真的非常感谢你!!
编辑
示例函数代码:
private func startTrackingActivityType() {
activityManager.startActivityUpdates(to: OperationQueue.main) {
[weak self] (activity: CMMotionActivity?) in
guard let activity = activity else { return }
DispatchQueue.main.async {
if activity.walking {
self?.activityTypeLabel.text = "Walking"
} else if activity.stationary {
self?.activityTypeLabel.text = "Stationary"
} else if activity.running {
self?.activityTypeLabel.text = "Running"
} else if activity.automotive {
self?.activityTypeLabel.text = "Automotive"
}
}
}
}
你根本不需要在后台。下次您的应用程序启动时,您可以检索 MotionActivity 的历史记录。此外,您还可以获取原始历史传感器数据。但你应该安排它。
详细信息:https://developer.apple.com/documentation/coremotion/cmmotionactivitymanager?language=objc