iOS получает пульс от Apple Watch практически в реальном времени

Мне нужно создать приложение, которое будет записывать данные о частоте сердечных сокращений практически в реальном времени и отправлять эти данные на сервер как можно скорее.

Сначала я выбрал такой подход: Watch os 2.0 beta: частота сердечных сокращений доступа

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

Моим первым подходом было приложение Watch. Часы отправляли данные на сервер. Это не работает, потому что как только экран на часах становится черным, он перестает отправлять.

Мой следующий подход состоял в том, чтобы каждые пять секунд запрашивать HealthKit на iPhone для получения новых данных. Это работает, пока приложение находится на переднем плане.

Затем я увидел, что есть какая-то фоновая функциональность, которая следит за самим HealthKit и отзывает приложение из фона, и вы можете что-то делать. (EnableBackgroundDeliveryForType) Это, похоже, не работает для частоты пульса (документация Apple говорит о таких вещах, как шаги не работает, я думаю, пульс является одним из тех).

Я застрял сейчас. Ты знаешь как это сделать? Мне понадобится фоновое задание, которое выполняется на iPhone каждые 5-10 секунд. Это кажется невозможным

1 ответ

ОБНОВИТЬ

Как заметил @BootMaker, Apple сделала фоновый режим доступным для приложений HKWorkout в WatchOS 3, и теперь он работает. Вы должны запустить HKWorkoutSession, и это обеспечит вашу сердечную доставку в режиме реального времени, даже когда приложение находится в фоновом режиме (темный экран на часах)

Ближе всего вы будете в то время как приложение для часов открыто.

Почему я это заявляю?

  1. Есть две базы данных HealthKit (одна на iPhone, а другая на Apple Watch). Когда они синхронизируются произвольно и решаются только ОС

  2. Ближе всего вы будете к реальному времени, когда у вас нет пароля, блокирующего ваш экран в iPhone или Apple Watch. В любом случае, нет никакой гарантии, что синхронизация будет происходить каждый раз, когда в HealthKit Apple Watch добавляется новая мера.

  3. Единственный способ заставить датчик ЧСС работать в режиме реального времени - с помощью тренировок или наблюдателя, пока ваше приложение Apple Watch находится в ЗАГЛУШЕНИИ.

  4. Фоновая доставка НЕ доступна для приложений Apple Watch.

  5. Часы OS 2 требуют, чтобы датчик измерял автоматически (в фоновом режиме) каждые 10 минут минимум.

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

Если кому-то еще нужно получить пульс или другие данные в реальном времени. Используйте это решение:

  1. Разработка приложения / расширения для Apple Watch
  2. В приложении для часов с помощью HKHealthStore, HKWorkoutConfiguration, HKWorkoutSession, HKLiveWorkoutBuilder для создания тренировки. После создания тренировки приложение для часов будет отображать пульс в режиме реального времени.
  3. Использование подключения набора часов к WCSession для отправки данных в приложение iPhone.
  4. Включите фоновый режим как в Apple Watch, так и в iPhone.

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

Другие вопросы по тегам