Swift CoreMotion背景节省电池

问题描述 投票:0回答:1

我需要使用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"
          }
      }
  }
}
ios iphone swift core-motion cmmotionmanager
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.