簡體   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