繁体   English   中英

HKWorkoutSession:在watchOS 2中关闭屏幕时未获得心率

[英]HKWorkoutSession: Not getting Heart Rate when screen is turned off in watchOS 2

我正在使用iOS 9 beta 4和watchOS 2 beta 4。

当手表屏幕变黑(锁定)时,我似乎无法获得任何心率数据。 我将调用applicationWillResignActive然后心率数据停止。

当屏幕锁定时,传感器似乎在一段时间后停用(不再是绿色)。

其他人看到这种行为? 如果有人在手表上的屏幕被锁定时获得心率数据,我可以发布我的代码来启动WorkoutSession。

从watchOS 3.0开始,您可以将带有workout-processing值的WKBackgroundModes条目添加到扩展的Info.plist中。

来自文档

在后台运行锻炼会话可以在后台运行。 后台运行授予应用程序以下功能:

该应用程序在整个锻炼过程中继续运行,即使用户降低手腕或与不同的应用程序进行交互。 当用户抬起手腕时,应用程序会重新出现,让用户可以快速轻松地检查他们当前的进度和性能。

该应用程序可以在后台继续从Apple Watch的传感器访问数据,让您始终保持应用程序的最新状态。 例如,正在运行的应用程序可以继续跟踪用户的心率,确保每当用户抬起手腕时显示最新的心率数据。

watch app平台旨在在applicationWillResignActive()之后不久完全禁用您的代码。 但是,如果HKWorkoutSession处于活动状态,手表应该在后台将心率数据记录到HK商店(只要另一个手表应用程序没有启动新的并取消您的)。

这大致是我开始心率收集的方法:

func startCollectingHR(){
    guard workoutSession == nil else{return} // Make sure it's not already started
    // Also make sure you get the appropriate HealthKit permissions
    workoutSession = HKWorkoutSession(activityType: HKWorkoutActivityType.CrossTraining, locationType: HKWorkoutSessionLocationType.Outdoor)
    workoutSession!.delegate = self
    healthStore.startWorkoutSession(workoutSession!)
    print("HR collection started.")
}

不幸的是,我还没有找到任何方法让心率在手表上的HealthKit商店外的任何地方可靠地直播。

我注意到了类似的行为,发现第一次锻炼会话会按照预期运行,但后续的锻炼只会在表盘处于活动状态时运行。 我通过在会话完成后重置HKWorkoutSession来解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM