HKWorkoutSession: отсутствие пульса при выключенном экране в watchOS 2

ios watchkit apple-watch health-kit watch-os-2

1097 просмотра

3 ответа

Я использую iOS 9 beta 4 и watchOS 2 beta 4.

Я не могу получить данные о частоте пульса, когда экран часов становится черным (блокируется). Я получу звонок, applicationWillResignActiveа затем данные сердечного ритма просто остановится.

Похоже, что датчик отключается через некоторое время (больше не зеленый), когда экран блокируется.

Кто-нибудь еще видел это поведение? Я могу опубликовать свой код для запуска WorkoutSession, если кто-то еще получит данные о частоте сердечных сокращений, когда экран на часах заблокирован.

Автор: Philip Источник Размещён: 12.11.2019 10:01

Ответы (3)


4 плюса

Начиная с watchOS 3.0 вы можете добавить WKBackgroundModesзапись со workout-processingзначением в Info.plist расширения.

Из документов :

Запуск в фоновом режиме Тренировки могут выполняться в фоновом режиме. Фоновый запуск предоставляет приложению следующие возможности:

Приложение продолжает работать в течение всего сеанса тренировки, даже когда пользователь опускает запястье или взаимодействует с другим приложением. Когда пользователь поднимает запястье, приложение появляется снова, позволяя пользователю быстро и легко проверить свой текущий прогресс и производительность.

Приложение может продолжать получать доступ к данным с датчиков Apple Watch в фоновом режиме, что позволяет постоянно поддерживать приложение в актуальном состоянии. Например, работающее приложение может продолжать отслеживать частоту сердечных сокращений пользователя, обеспечивая отображение самых последних данных о частоте сердечных сокращений всякий раз, когда пользователь поднимает запястье.

Автор: psobko Размещён: 15.11.2016 09:44

2 плюса

Платформа приложения для часов предназначена для полного отключения вашего кода вскоре после 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 на часах.

Автор: TealShift Размещён: 21.09.2015 12:08

0 плюса

Я заметил похожее поведение и обнаружил, что первый сеанс тренировки будет работать так, как задумано, но последующие будут выполняться только при активном циферблате. Я решил проблему, сбросив HKWorkoutSession после завершения сеанса.

Автор: mcclux Размещён: 16.11.2015 05:28
Вопросы из категории :
32x32