Значок приложения HeartRate Broadcaster

Ваша частота сердечных сокращений,
на любом велокомпьютере.

HeartRate Broadcaster (HRB) считывает частоту сердечных сокращений с Apple Watch и AirPods Pro, объединяет данные в одно значение и передает по Bluetooth LE как стандартный датчик ЧСС. Ваше приложение для тренировок видит нагрудный датчик.

Попробовать бесплатно через TestFlight, установить вручную или купить в App Store за 4,99 USD. Три варианта. Страница приложения на рассмотрении.

Одно сердце, один поток

Ваши часы измеряют. Ваши AirPods измеряют. Два датчика, расходящихся в один момент, хуже, чем один датчик, слегка ошибающийся, поэтому HRB никогда не транслирует оба — она арбитражирует между ними и выводит в эфир ровно одно число.

HeartRate Broadcaster показывает 96 уд/мин с Apple Watch, строку соглашения о датчике с надписью «Только часы» и подключенное головное устройство.

Согласование датчиков, открыто

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

Apple Watch
Основной датчик. Он запускает настоящую тренировку — единственный способ измерять частоту сердечных сокращений с полезной частотой дискретизации и продолжать измерять её при выключенном экране.
AirPods Pro 3
Второй, полностью необязательный датчик. Одних часов достаточно для полноценного источника; одни AirPods тоже.
iPhone
Усредняет показания, которые совпадают, отбрасывает выброс, когда они не совпадают, и рекламирует результат как стандартную службу частоты сердечных сокращений Bluetooth LE (0x180D). Когда датчик замолкает, в строке указывается это, а не тихое сравнение со старым числом.
Головное устройство
MyWhoosh, Zwift, TrainerRoad, Wahoo и устройства Garmin Edge с поддержкой Bluetooth видят один обычный нагрудный ремень.

Три способа получить приложение

Одно приложение и одна его сборка. Разница лишь в способе установки: два из них бесплатны, но требуют усилий или терпения, а третий — App Store, самый удобный вариант.

TestFlight — бесплатно, 90 дней

Доступно всем, приглашение не требуется. Установите приложение TestFlight от Apple, откройте публичную ссылку, и бета-версия установится параллельно с остальными приложениями. Каждая сборка остаётся активной 90 дней с момента публикации; новая сборка сбрасывает отсчёт, поэтому бета-версия продолжает работать при регулярных обновлениях.

Присоединиться к публичной бете

Установка вручную — бесплатно, нужен аккаунт разработчика

Каждый релиз на GitHub содержит сборку .ipa конфигурации Release. Она подписана для распространения, поэтому для установки требуется переподписать её своим сертификатом — это делают Xcode, AltStore или Sideloadly. HealthKit и фоновая работа Bluetooth недоступны в профилях бесплатной подписи, поэтому этот способ требует платного аккаунта Apple Developer. Там же доступен полный исходный код.

Релизы на GitHub

App Store — 4,99 USD

Одна покупка. Никакой подписки, внутриприобретений, рекламы или учётной записи; приложение обновляется автоматически, как и любое другое. Вы платите за удобство, не прибегая к описанным выше методам, и за работу, вложенную в разработку.

Посмотреть в App Store

Попробовать в TestFlight

Бета-версия открыта: списка приглашений и этапа одобрения нет. Это то же приложение, что и платная версия, устанавливаемое через бета-канал Apple вместо магазина.

1 — Установите TestFlight
Официальное бета-приложение Apple, бесплатное в App Store. Оно должно быть установлено на iPhone, чтобы ссылка начала работать.
2 — Откройте публичную ссылку
На том же iPhone откройте testflight.apple.com/join/VUJCa5Gw, затем нажмите «Принять» и «Установить». Приглашение и код не требуются.
3 — Добавьте приложение для часов
Установите его из приложения Watch на iPhone, так же как и любое другое приложение для часов. Часы выступают в роли датчика, поэтому этот шаг обязателен.

Сборка TestFlight работает 90 дней с момента публикации. Каждая новая сборка перезапускает этот период, поэтому бета-версия продолжает работать, пока обновляется. Версия в App Store не имеет срока действия.

Каждый экран

Скриншоты сделаны из релизной сборки на iPhone 17 Pro Max и Apple Watch. Здесь нет макетов.

Что он делает

Всё, что здесь указано, уже доступно в приложении. На этой странице нет информации о будущих планах разработки.

Настоящий нагрудный датчик пульса

Передаёт стандартную службу Heart Rate Service (0x180D) с данными Heart Rate Measurement и Body Sensor Location. Любое устройство, сопрягающееся с Bluetooth-датчиком, поддерживает эту функцию без необходимости установки дополнительного приложения или плагина.

Два датчика, одно значение

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

Dynamic Island

Активные уведомления на экране блокировки и в Dynamic Island: текущий пульс, источник сигнала и статус подписки устройства. Информация видна без разблокировки.

Плавающее окно

Режим «Картинка в картинке» оставляет пульс на экране при работе с другими приложениями. Запустите трансляцию в HRB, переключитесь на тренировочное приложение, и значение BPM будет отображаться в виде плавающего окна.

Блокировка сенсорного экрана часов

Рукав, молния джерси или случайное касание руля могут прервать трансляцию во время езды. Активируйте блокировку, и приложение на часах проигнорирует случайные нажатия. Для разблокировки требуется нажатие длительностью одна секунда, при этом пульс остается читаемым всё время.

Диагностика, которая показывает реальное положение дел

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

Анимация, синхронизированная с ритмом сердца

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

Продолжает передачу в фоновом режиме

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

Тестовый сигнал

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

Совместимость

Любое устройство, принимающее данные от Bluetooth LE-датчика частоты сердечных сокращений, будет воспринимать HRB как такой датчик.

MyWhoosh Zwift TrainerRoad Wahoo Garmin Edge (Bluetooth) nRF Connect

Нет ANT+ — и ни одно приложение не может это добавить

HRB передает данные только по Bluetooth LE. ANT+ — это отдельный радиопроткол, а в iPhone нет оборудования для ANT+, поэтому никакое программное обеспечение не может его использовать. Это ограничение устройства, а не приложения.

Устройства, которые принимают данные о частоте сердечных сокращений только через ANT+ — включая Garmin Forerunner 935, — никогда не увидят эту трансляцию, независимо от настроек.

Настройка для MyWhoosh

Работают два варианта. Выбор зависит от того, готовы ли вы носить с собой iPhone, потому что Apple Watch не может ничего обнаружить без него.

Apple Watch + iPhone + AirPods Pro 3

Точный вариант. Оба датчика передают данные, HRB сводит их в одно значение, а MyWhoosh видит один датчик. Запустите приложение на часах, выберите Both в качестве источника на телефоне, затем сопрягите HRB в экране датчиков MyWhoosh. Телефон остается в комнате; часам не нужно находиться рядом с головным устройством, достаточно быть рядом с телефоном.

iPad + AirPods Pro 3

Одноустройственный вариант. AirPods Pro 3 подключаются напрямую к iPad, поэтому HRB, MyWhoosh и Bike Control работают на одном экране без участия телефона и часов. Установите источник AirPods — опции часов здесь скрыты, так как им не к чему подключаться.

Часы всегда работают через iPhone

Apple Watch сопрягается только с iPhone. Она не может подключиться к iPad и никогда не передает данные о пульсе по Bluetooth самостоятельно. Приложение на часах измеряет данные, передает показание на телефон по каналу связи между часами и телефоном, и именно телефон является устройством, к которому подключается ваше головное устройство.

Таким образом, часы добавляют второй датчик к конфигурации с iPhone, но не добавляют ничего к конфигурации с iPad. Если вы хотите одно устройство на столе, используйте AirPods на iPad и не подключайте часы.

Сопряжение один раз, в активном окне Держите HRB открытым на экране, пока MyWhoosh не сообщит об успешном подключении датчика. iOS скрывает объявляемые сервисы фоновых приложений, поэтому обнаружение должно происходить, когда HRB находится на переднем плане — после этого можно переключать приложения или блокировать устройство, и соединение сохранится.
Вещание с одного устройства Запустите HRB на телефоне или iPad, но не на обоих устройствах одновременно. Два работающих экземпляра создают в списке MyWhoosh два одинаковых датчика HRB, и на экране сопряжения их невозможно различить.
Связь с часами, если строка красная Строка Watch App на главном экране показывает, что видит телефон. «Не установлено» означает, что приложение на часах никогда не запускалось; «недоступно» обычно говорит о том, что приложение не работает — откройте его и запустите сессию. На iPad эта строка полностью отсутствует.
Проверка без датчика Установите источник в значение Test Signal, чтобы транслировать синтетический сигнал 50–100 уд/мин. Он сопрягается с MyWhoosh так же, как реальные данные, что позволяет быстро убедиться в работе датчика до надевания ремешка.

Вопросы

Самые частые проблемы и честные ответы на них.

AirDrop перестал работать — сначала остановите трансляцию

AirDrop ищет устройства поблизости через Bluetooth LE, так же как и HRB, используя один и тот же радиомодуль. Пока HRB транслирует данные, а головное устройство подписано на них, модуль занят непрерывно, и AirDrop может не увидеть устройство на другом конце — или увидеть его, но зависнуть до начала передачи.

Остановите трансляцию или закройте HRB, затем AirDrop. Всё снова заработает немедленно, и ничего не потеряется: повторное сопряжение занимает одно нажатие, как только HRB снова выйдет на передний план. То же самое стоит попробовать для любых других функций, которые перестают работать во время трансляции — передача на CarPlay, клавиатура Bluetooth, которая начинает терять нажатия, или Continuity Camera.

Можно ли блокировать экран после сопряжения?

Да. Для обнаружения приложение HRB должно быть на переднем плане, но соединение сохраняется при блокировке, сворачивании и переключении приложений. Нельзя выполнить первое сопряжение, если приложение скрыто — iOS останавливает трансляцию сервиса в фоновом режиме.

Каково потребление батареи?

Сама трансляция потребляет мало энергии; значительно больше расходует сеанс тренировки, который формирует показания. Ожидайте примерно столько же, сколько потребляет любая тренировка с измерением пульса на этом устройстве. Часы потребляют больше, чем iPhone, поскольку именно они осуществляют измерение.

Могут ли два приложения одновременно считывать трансляцию?

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

Показания пульса замерли во время езды

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

Garmin не находит устройство

Проверьте, поддерживает ли эта модель передачу частоты сердечных сокращений только через ANT+. У iPhone нет радиомодуля ANT+, поэтому ни одно приложение не может передавать данные по этому протоколу. Устройства Garmin, принимающие данные от Bluetooth-ремешка, обычно успешно подключаются к HRB; те, что не поддерживают Bluetooth, никогда не подключатся.

Куда передаются данные?

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

Требования

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

iPhone iOS 26 или новее. Для трансляции используется роль периферийного устройства Bluetooth, которую не поддерживает симулятор — требуется реальное устройство.
Apple Watch watchOS 11 или новее. Приложение для часов запускает сеанс тренировки, что является единственным способом получать данные о частоте сердечных сокращений с достаточной частотой и продолжать сбор данных при выключенном экране.
AirPods Необязательно. AirPods Pro 3 передают данные о частоте сердечных сокращений на устройство, на котором запущен сеанс тренировки, поэтому HRB запускает его на телефоне, когда вы включаете их в качестве источника.
Цена 4,99 USD в App Store, единовременная оплата. Никакой подписки и внутриприобретений. Бета-версия TestFlight работает параллельно с релизом для всех, кто хочет получить следующую версию раньше.
Подключение Держите приложение открытым до подключения вашего головного устройства. iOS скрывает UUID объявляемой службы фоновым приложением, поэтому обнаружение должно происходить в переднем плане — после этого соединение сохраняется при блокировке телефона.
Имя трансляции По умолчанию HRB, можно изменить до 10 символов — рекламные пакеты имеют размер 31 байт, а головные устройства обрезают более длинные имена.

Исходный код на GitHub

Всё приложение опубликовано под лицензией MIT — приложение для iPhone, приложение для часов, Live Activity, скрипты сборки и этот сайт. Если вы предпочитаете самостоятельно изучить код Bluetooth, а не доверять заявлению о конфиденциальности, весь код доступен.

Прочитать
github.com/tankbottoms/HeartRateBroadcaster — Swift, без зависимостей, без SDK аналитики.
Собрать
Клонируйте, запустите xcodegen generate, откройте проект и соберите. Для подписи требуется ваш идентификатор команды; больше ничего не нужно.
Установить вручную
Каждый релиз содержит .ipa-файл конфигурации Release с инструкциями по ручной установке. HealthKit и фоновый Bluetooth недоступны для бесплатных provisioning-профилей, поэтому для переподписания нужен платный аккаунт Apple Developer.