어떤 사이클로컴퓨터에서도
실시간 심박수를 확인하세요.
HeartRate Broadcaster(HRB)는 Apple Watch와 AirPods Pro에서 실시간 심박수를 읽어서 단일 측정값으로 결합한 후, 표준 심박수 모니터로 Bluetooth LE를 통해 다시 브로드캐스트합니다. 훈련 앱에서는 가슴 스트랩을 사용하는 것처럼 인식됩니다.
TestFlight에서 무료로 체험하거나, 자체 설치하거나, App Store에 출시되면 USD 4.99입니다. 세 가지 옵션. 스토리스트 목록은 검토 중입니다.
하나는 심장, 하나는 스트림
시계가 측정하고, AirPods가 측정합니다. 두 센서가 같은 순간에 다른 값을 보고하는 것은 하나의 센서가 약간 잘못 측정하는 것보다 더 나쁘므로, HRB는 두 값을 모두 방송하지 않습니다. 대신 두 값 사이에서 판단하여 공중으로 정확히 하나의 숫자만 전송합니다.
공개된 센서 일치
이 앱은 사용자에게 자신의 말을 믿으라고 요청하지 않습니다. 현재 수신할 수 있는 센서를 명시하고, BPM 단위로 그 차이를 표시하며, 최종적으로 선택하여 전송한 단일 값을 보여줍니다.
- Apple Watch
- 주요 센서입니다. 실제 운동 세션을 실행하여 유용한 속도로 심박수를 샘플링하고, 화면이 꺼진 상태에서도 샘플링을 유지하는 유일한 방법을 제공합니다.
- AirPods Pro 3
- 두 번째이며 완전히 선택적인 센서입니다. 시계만으로도 완전한 소스가 되며, AirPods만으로도 충분합니다.
- iPhone
- 일치하는 값은 평균을 내고, 일치하지 않을 때는 이상치를 거부한 후, 결과를 표준 Bluetooth LE 심박수 서비스(
0x180D)로 광고합니다. 센서가 신호를 멈추면, 낡은 값과 조용히 비교하는 대신 해당 행에 그 사실을 명시합니다. - 헤드 유닛
- MyWhoosh, Zwift, TrainerRoad, Wahoo, 그리고 Bluetooth 지원 Garmin Edge 장치는 모두 하나의 일반적인 가슴 스트랩을 인식합니다.
얻는 세 가지 방법
앱은 하나이고 빌드도 하나입니다. 다른 점은 앱에 접근하는 방법입니다. 이 경로 중 두 가지는 비용이 들지 않지만 노력이나 인내를 요구하며, 세 번째는 편리한 앱 스토어입니다.
TestFlight — 무료, 90일
누구나 참여 가능, 초대 불필요. Apple의 TestFlight 앱을 열고 공개 링크를 열면 베타가 다른 앱들과 함께 설치됩니다. 각 빌드는 게시된 날로부터 90일 동안 사용 가능합니다. 새 빌드가 올라오면 시간이 초기화되어 업데이트가 계속되는 한 베타는 계속 실행됩니다.
직접 설치 — 무료, 개발자 계정 필요
모든 GitHub 릴리스에는 Release 구성의 .ipa 파일이 포함되어 있습니다. 이 파일은 배포용으로 서명되어 있으므로 설치하려면 자신의 인증서로 다시 서명해야 합니다. Xcode, AltStore, Sideloadly 모두 이 작업을 수행할 수 있습니다. HealthKit과 백그라운드 Bluetooth는 무료 프로비저닝 프로필에서는 사용할 수 없으므로 이 경로에는 유료 Apple Developer 계정이 필요합니다. 전체 소스 코드도 함께 제공됩니다.
앱 스토어 — USD 4.99
한 번 구매로 구독, 인앱 구매, 광고, 계정이 필요 없습니다. 앱이 자동으로 업데이트됩니다. 위 두 가지 방법을 사용하지 않는 편의와 이에 담긴 작업에 대한 대가를 지불하는 것입니다.
TestFlight에서 체험하기
베타는 공개되어 있으며, 초대 목록이나 승인 단계가 없습니다. 유료 릴리스와 동일한 앱이며, 스토어가 아닌 Apple의 베타 채널을 통해 설치됩니다.
- 1 — TestFlight 설치
- Apple의 자체 베타 앱으로, App Store에서 무료로 제공됩니다. 링크가 작동하려면 iPhone에 먼저 설치되어 있어야 합니다.
- 2 — 공개 링크 열기
- 동일한 iPhone에서 testflight.apple.com/join/VUJCa5Gw를 열고, 수락 및 설치를 탭하세요. 초대나 코드가 필요하지 않습니다.
- 3 — 시계 앱 추가
- iPhone의 Watch 앱에서 다른 모든 시계 앱과 동일한 방식으로 설치합니다. 시계가 센서이므로 이 단계는 필수입니다.
TestFlight 빌드는 게시된 날로부터 90일 동안 유효합니다. 새 빌드가 출시될 때마다 이 기간이 재시작되므로, 업데이트가 계속되는 한 베타가 계속 실행됩니다. App Store 버전에는 만료되지 않습니다.
모든 화면
iPhone 17 Pro Max 및 Apple Watch에서 배송용 빌드를 캡처한 것입니다. 여기에 있는 것은 모두 모의 데이터가 아닙니다.
주요 기능
여기에 있는 모든 기능은 현재 앱에서 사용할 수 있습니다. 이 페이지에 있는 내용은 로드맵이 아닙니다.
실제 심박수 스트랩
표준 심박수 서비스(0x180D)를 심박수 측정 및 신체 센서 위치와 함께 광고합니다. 모든 블루투스 스트랩은 이 기능을 지원하며, 전용 앱이나 플러그인이 필요하지 않습니다.
두 개의 센서, 하나의 수치
시계와 AirPods가 모두 데이터를 보고할 때, HRB는 일치하는 읽기 값을 평균내고 불일치할 때는 이상치를 거부합니다. 이미 확인된 추세에 더 가까운 값을 선호합니다. 헤드유닛은 항상 하나의 센서만 확인합니다.
다이나믹 아일랜드
잠금 화면과 다이내믹 아일랜드에서 라이브 액티비티: 현재 BPM, 데이터 출처, 헤드 유닛이 실제로 구독 중인지 여부. 잠금 해제 없이도 한눈에 확인 가능.
플로팅 창
다른 앱을 사용 중일 때도 화면에 수치를 유지하는 피처입니다. HRB에서 운동을 시작한 후 훈련 앱으로 전환해도 BPM이 플로팅 창으로 따라옵니다.
워치 화면 잠금
슬리브, 조끼 지퍼, 핸들바 테이프를 잡는 동작 등으로 인해 라이드 중 방송이 중단될 수 있습니다. 잠금을 활성화하면 워치 앱이 실수한 탭을 무시합니다. 1초간 길게 눌러야 잠금이 해제되며, BPM은 계속 읽을 수 있습니다.
사실을 알려주는 진단
설정에서 연결된 중앙 장치의 식별자, 구독자당 전송된 프레임 수, 실시간 프레임 속도, 마지막 프레임의 정확한 바이트, 그리고 마지막으로 전송된 지 경과 시간을 확인할 수 있습니다. 문제가 발생하면 링크의 어느 쪽에 문제가 있는지 확인할 수 있습니다.
심박 동기화 애니메이션
휴대전화와 시계의 하트가 측정된 심박수에 맞춰 뛰며, 샘플 수신이 중단되면 멈춥니다. 합리적인 수치 위에 정지된 하트가 표시되면 센서가 연결이 끊겼음을 의미합니다.
백그라운드에서도 계속 전송
헤드 유닛이 연결되면 잠금 화면에서도 링크가 유지됩니다. HRB는 값이 변경되었는지 여부와 관계없이 1초마다 알림을 보내며, 이는 실제 심박 스트랩이 수행하고 헤드 유닛이 기대하는 동작입니다.
테스트 신호
장비를 착용하지 않고 페어링 및 디버깅을 위한 합성 심박 소스입니다. 센서 문제를 걱정하기 전에 헤드 유닛이 브로드캐스트를 수신하는지 확인하세요.
호환성
블루투스 LE 심박 센서를 수용하는 모든 장치는 HRB를 심박 센서로 인식합니다.
ANT+ 미지원 — 앱으로도 추가 불가
HRB는 블루투스 LE로만 브로드캐스트합니다. ANT+는 별도의 무선 프로토콜이며, iPhone에는 ANT+ 하드웨어가 없으므로 어떤 소프트웨어도 이를 전송할 수 없습니다. 이는 앱의 제한이 아닌 기기의 제한입니다.
ANT+를 통해서만 심박을 페어링하는 기기(예: Garmin Forerunner 935 포함)는 구성 방법과 관계없이 이 브로드캐스트를 절대 수신하지 못합니다.
MyWhoosh 설정 중
두 가지 구성이 작동합니다. 어떤 것을 선택할지는 iPhone을 휴대할 의사가 있는지 여부입니다. iPhone이 없으면 Apple Watch는 어떤 장치에도 연결할 수 없기 때문입니다.
Apple Watch + iPhone + AirPods Pro 3
정확한 구성입니다. 두 센서 모두 데이터를 전송하며, HRB가 이를 하나의 숫자로 통합합니다. MyWhoosh는 단일 스트랩을 인식합니다. Watch 앱을 시작하고, iPhone에서 소스로 Both를 선택한 후, MyWhoosh의 센서 화면에서 HRB를 페어링하세요. iPhone은 방 안에 그대로 두고, Apple Watch는 헤드유닛 근처가 아니라 iPhone 근처에 두면 됩니다.
iPad + AirPods Pro 3
단일 기기 구성입니다. AirPods Pro 3이 iPad에 직접 페어링되므로, HRB, MyWhoosh, Bike Control 모두 iPhone이나 Apple Watch 없이 동일한 화면에서 실행됩니다. 소스를 AirPods로 설정하세요. 연결할 대상이 없으므로 Watch 옵션은 여기에서 숨겨집니다.
Apple Watch는 항상 iPhone을 통해 연결됩니다
Apple Watch는 iPhone과만 페어링됩니다. iPad와 페어링할 수 없으며, Bluetooth를 통해 자체적으로 심박수를 광고하지도 않습니다. Watch 앱이 측정한 데이터를 Watch-to-phone 링크를 통해 iPhone으로 전달하면, 헤드유닛은 실제로 iPhone에 연결됩니다.
따라서 Apple Watch는 iPhone 구성에 두 번째 센서를 추가하지만, iPad 구성에는 아무것도 추가하지 않습니다. 책상 위에 기기를 하나만 두고 싶다면, iPad에서 AirPods를 사용하고 Apple Watch는 제외하세요.
| 전경에서 한 번 페어링 | MyWhoosh가 센서가 연결되었다고 보고할 때까지 HRB를 화면에 열어두세요. iOS는 백그라운드 앱의 광고 서비스를 숨기므로, 발견 과정은 HRB가 최전방에 있을 때만 가능합니다. 그 후 앱을 전환하거나 기기를 잠그더라도 연결은 유지됩니다. |
|---|---|
| 단일 기기에서 방송 | 휴대전화나 iPad에서 HRB를 실행하세요. 둘 다 실행하면 동시에 두 개의 동일한 HRB 센서가 MyWhoosh 목록에 나타나며, 페어링 화면에서는 이들을 구분할 수 없습니다. |
| 시계 링크, 행이 빨간색인 경우 | 메인 화면의 시계 앱 행은 휴대전화가 실제로 감지하는 내용을 보고합니다. '설치되지 않음'은 시계 앱을 아직 열지 않았음을 의미하며, '연결 불가'는 보통 시계 앱이 실행 중이지 않음을 의미합니다. 앱을 열고 세션을 시작하세요. iPad에서는 행이 완전히 사라집니다. |
| 센서 없이 테스트 중 | 출처를 테스트 신호로 설정하여 50–100 BPM의 합성 신호를 방송합니다. 이는 실제 측정값과 정확히 동일한 방식으로 MyWhoosh에 페어링되므로, 장비를 착용하기 전에 센서 측이 정상 작동하는지 확인하는 가장 빠른 방법입니다. |
질문
가장 먼저 부딪히는 문제들과 각 문제에 대한 솔직한 답변입니다.
AirDrop가 작동하지 않음 — 먼저 방송을 중지하세요
AirDrop는 Bluetooth LE를 통해 주변 기기를 검색하며, HRB도 동일한 라디오를 사용하여 동일한 방식으로 작동합니다. HRB가 광고를 보내고 헤드 유닛이 구독 중일 때 해당 라디오를 지속적으로 점유하므로, AirDrop는 상대방 기기를 발견하지 못하거나, 기기를 표시한 후 전송 시작 전에 멈출 수 있습니다.
방송을 중지하거나 HRB를 종료한 후 AirDrop를 실행하세요. 즉시 다시 작동하며, 손실된 데이터는 없습니다. HRB가 포그라운드로 돌아오면 페어링은 한 번의 탭으로 완료됩니다. 방송 중 다른 기능이 멈출 경우(예: CarPlay 핸드오프, 키보드 입력 끊김, Continuity Camera)에도 동일한 방법을 시도해 볼 가치가 있습니다.
페어링 후 화면을 잠글 수 있나요?
네. 디스커버리(검색)에는 HRB가 포그라운드에 있어야 하지만, 연결은 화면 잠금, 백그라운드 전환, 앱 전환 시에도 유지됩니다. 단, 앱이 숨겨진 상태에서 처음 페어링하는 것은 불가능합니다. iOS는 백그라운드에서 서비스 광고를 중지하기 때문입니다.
배터리 소모량은 얼마나 됩니까?
방송 자체는 전력 소모가 적지만, 판독값을 생성하는 운동 세션은 그렇지 않습니다. 해당 기기에서 심박수 운동이 차지하는 배터리 소모량과 비슷할 것으로 예상됩니다. iPhone 구성에서 시계가 더 많은 영향을 받습니다. 시계가 측정하는 쪽이기 때문입니다.
두 앱이 동시에 방송을 읽을 수 있습니까?
네. Bluetooth LE는 하나의 센서에 여러 구독자를 허용하므로 MyWhoosh와 두 번째 앱이 동일한 수치를 모두 볼 수 있습니다. 메인 화면에는 실시간 구독자 수가 표시되어 두 앱이 실제로 모두 연결되었는지 확인할 수 있습니다.
주행 중 BPM이 멈췄습니다
측정값이 오래되면 죽은 수치를 반복하는 대신 회색으로 표시됩니다. AirPods의 경우 이는 보고를 중단했음을 의미합니다. 해당 행의 경로 선택기가 오디오를 튕겨 내보내고 다시 받아와 앱에서 나가지 않고도 링크를 재설정합니다.
Garmin에서 검색되지 않습니다
해당 모델이 ANT+를 통해서만 심박수를 페어링하는지 확인하십시오. iPhone에는 ANT+ 라디오가 없으므로 어떤 앱도 이를 전송할 수 없습니다. Bluetooth 스트랩을 수락하는 Garmin 기기는 HRB와 정상적으로 페어링되지만, 그렇지 않은 기기는 절대 페어링되지 않습니다.
데이터는 어디로 가나요?
블루투스 라디오로만 가고 다른 곳으로는 가지 않습니다. 계정, 서버, 분석 도구가 없습니다. 심박수는 기기에서 HealthKit을 통해 들어와 페어링한 대상에게 표준 센서 값으로 나갑니다.
요구 사항
계정이나 로그인이 필요 없으며, 데이터는 휴대폰을 벗어나지 않습니다. 심박수는 Bluetooth 라디오로만 전송되고 다른 곳으로는 가지 않습니다.
| iPhone | iOS 26 이상. 브로드캐스팅은 Bluetooth 주변기자 역할을 사용하며, 시뮬레이터는 이를 지원하지 않습니다. 실제 하드웨어가 필요합니다. |
|---|---|
| Apple Watch | watchOS 11 이상. 시계 앱은 운동 세션을 실행하며, 이는 유용한 속도로 심박수를 얻고 화면이 꺼져 있어도 샘플링을 유지하는 유일한 방법입니다. |
| AirPods | 선택 사항. AirPods Pro 3는 운동 세션을 실행하는 모든 기기에 심박수를 보고하므로, HRB는 소스로 활성화할 때 휴대폰에서 세션을 시작합니다. |
| 가격 | App Store에서 USD 4.99, 일회성 결제. 구독이나 인앱 구매 없음. TestFlight 베타는 출시 버전과 병행하여, 다음 버전을 조기에 원하는 모든 사람이 사용할 수 있습니다. |
| 페어링 | 헤드 유닛이 연결될 때까지 앱을 실행 상태로 유지하세요. iOS는 백그라운드 앱의 광고 서비스 UUID를 숨기므로, 디스커버리는 포그라운드에서 이루어져야 합니다. 일단 연결되면 기기를 잠그더라도 연결이 유지됩니다. |
| 브로드캐스트 이름 | 기본값은 HRB이며, 최대 10자까지 수정 가능합니다. 광고 패킷은 31바이트이며, 헤드 유닛은 더 긴 이름을 잘라냅니다. |
GitHub에서 오픈 소스 보기
전체 앱은 MIT 라이선스에 따라 공개됩니다 — iPhone 앱, Watch 앱, Live Activity, 빌드 스크립트 및 이 웹사이트 모두 해당됩니다. 사생활 보호 주장을 신뢰하기보다 Bluetooth 코드를 직접 확인하고 싶다면, 모든 코드가 공개되어 있습니다.
- 읽기
- github.com/tankbottoms/HeartRateBroadcaster — Swift로 작성되었으며, 의존성이나 분석 SDK가 없습니다.
- 빌드
- 복제한 후
xcodegen generate를 실행하고 프로젝트를 열어 빌드합니다. 코드 서명에는 고유한 팀 식별자가 필요하며, 그 외 추가 설정은 필요하지 않습니다. - 사이드로딩
- 각 릴리스에는 사이드로딩 지침이 포함된 Release 구성
.ipa파일이 포함되어 있습니다. HealthKit 및 백그라운드 Bluetooth는 무료 프로비저닝 프로필에서는 사용할 수 없으므로, 재서명하려면 유료 Apple Developer 계정이 필요합니다.