Swift CoreMotion背景节省电池

时间:2018-04-11 18:03:16

标签: ios iphone swift core-motion cmmotionmanager

我需要使用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"
          }
      }
  }
}

1 个答案:

答案 0 :(得分:0)

您根本不需要在后台。下次您的应用启动时,您可以检索MotionActivity的历史记录。此外,您还可以获得原始的历史传感器数据。但是您应该安排它。

详细信息:https://developer.apple.com/documentation/coremotion/cmmotionactivitymanager?language=objc