首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用程序不接收背景中的DeviceMotion更新(WatchOS 6)

应用程序不接收背景中的DeviceMotion更新(WatchOS 6)
EN

Stack Overflow用户
提问于 2020-04-08 14:09:51
回答 1查看 237关注 0票数 0

我正在为application开发一个应用程序,它通过DeviceMotion获取加速度计、陀螺仪数据,并通过HKWorkout获取心率。

在应用程序保持在前台之前,所有的应用程序都运行良好。然而,当它进入非活动状态(当用户降低手腕),它工作了一段时间,但在某一点上它停止了。此外,当应用程序进入后台,应用程序停止收集新的DeviceMotion更新,但我认为心率的观察者继续工作,因为绿色的引导仍然存在。

我为DeviceMotion使用的代码是:

代码语言:javascript
复制
if self.motion.isDeviceMotionAvailable {
     self.motion.deviceMotionUpdateInterval = 1.0 / 100.0
     self.motion.showsDeviceMovementDisplay = true

     self.motion.startDeviceMotionUpdates(using: .xMagneticNorthZVertical, to: OperationQueue.main, withHandler: { (data, error) in
          if let d = data {
               //collecting data
          }
     }
}

我用于心率的代码:

代码语言:javascript
复制
let workoutConfiguration = HKWorkoutConfiguration()
workoutConfiguration.activityType = .crossTraining
workoutConfiguration.locationType = .indoor

do {
     if workoutSession == nil {
          workoutSession = try HKWorkoutSession(healthStore: HealthDataManager.sharedInstance.healthStore!, configuration: workoutConfiguration)
               workoutSession?.startActivity(with: Date())
          }
} catch {
      print("Error starting workout session: \(error.localizedDescription)")
}

HealthDataManager.sharedInstance.observeHeartRateSamples { (heartRate) -> (Void) in
      print("heart rate sample: \(heartRate)")
      self.lastHearRateSample = heartRate
}

因为苹果文档状态(https://developer.apple.com/documentation/healthkit/workouts_and_activity_rings)

当一个锻炼会话处于活动状态时,您的应用程序可以继续在后台运行。这样,应用程序就可以监视用户,并在整个活动过程中收集数据。此外,它确保当用户检查他们的手表时,应用程序就会出现。

我认为在这种情况下没有必要管理应用程序的行为。然而,似乎必须做些什么。在后台状态(以及处于非活动状态)收集新DeviceMotion数据的最佳方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2020-04-10 10:17:58

事实证明,应用程序是在后台,因为健康工具包的锻炼。然而,我使用太多的资源和系统暂停应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61102745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档