[英]watchOS: How to use HKWorkoutSession without heart rate sensor
[英]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.