가민 Fenix 7 Pro Solar를 쓰는데, 야구 볼 때 폰을 매번 꺼내는 게 귀찮았다. 손목에서 우리 팀 점수가 실시간으로 보이면 좋겠다 싶어서 워치페이스를 직접 만들기로 했다. 만들다 보니 워치 플랫폼의 제약이 생각보다 빡빡해서, 워치 혼자로는 안 되고 폰을 끼워야 했던 이야기다.
가민 워치 앱은 Connect IQ SDK로 만든다. 워치페이스는 그중에서도 시계 화면 자체를 그리는 종류인데, 시간·날짜 같은 기본 정보에 원하는 걸 얹어서 그린다. SDK를 설치하고 대상 기기를 fenix7pro로 잡은 다음, 시간과 날짜를 그리는 기본 골격부터 세웠다. 여기까지는 순조로웠다.
문제는 "실시간 점수"였다. 워치페이스가 스스로 인터넷에서 점수를 계속 긁어오게 만들고 싶었는데, 여기서 플랫폼 제약에 부딪혔다.
Connect IQ 워치페이스는 백그라운드 실행 시간이 제한된다. 대략 5분 단위의 제약이 있어서, 워치페이스가 혼자 계속 네트워크를 폴링하면서 실시간 데이터를 받아오는 구조를 만들 수가 없다. 배터리를 아끼려는 플랫폼의 의도라 이해는 되는데, 실시간 스코어보드를 원하는 입장에선 벽이었다.
그래서 방향을 틀었다. 워치가 직접 데이터를 가져오는 대신, 폰이 데이터를 가져와서 워치로 밀어주는 구조로 갔다.
폰 쪽에 안드로이드 컴패니언 앱을 붙였다. 이 앱이 15초마다 라이브 점수를 폴링하고, 경기가 진행 중일 때 그 값을 워치로 sendMessage를 통해 전송한다. 워치페이스는 폰에서 오는 메시지를 받는 수신부만 두고, 받은 점수를 화면에 그린다. 즉 무거운 네트워크 작업은 폰이 하고, 워치는 표시만 담당한다. 이렇게 나누니 5분 제한을 우회하면서도 손목에서 거의 실시간에 가까운 점수를 볼 수 있었다.
경기 중이 아닐 때는 굳이 야구 UI를 띄우지 않게 했다. 경기가 시작된 상태(STARTED)일 때만 스코어를 표시하고, 평소에는 일반 시계 화면으로 둔다. 응원팀 점수는 눈에 띄게 강조 색으로 처리했다.
기왕 새로 만드는 김에 기존 페이스를 그대로 복제하기보다 내 취향대로 다시 디자인했다. 상단에 한글 요일과 날짜를 넣고, 강조 색 헤더, 정리된 데이터 그리드, 분 단위 진행 링을 얹었다. 경기 중에는 그 위에 라이브 스코어 라인이 뜬다. 가독성을 손목에서 확인하면서 몇 번 조정했다.
다 만들고 워치에 올리는 단계에서 마지막 함정이 있었다. macOS에서 Fenix 7을 USB로 꽂아도 /Volumes/GARMIN 같은 일반 저장장치로 마운트되지 않았다. 이 기기는 대용량 저장장치가 아니라 MTP 방식으로 붙기 때문이다. 그래서 파인더로는 파일을 못 넣고, OpenMTP나 libmtp 같은 MTP 도구를 써야 했다. 가민 Express가 떠 있으면 충돌하니 완전히 종료한 다음, 빌드한 .prg 파일을 워치의 GARMIN/Apps/ 경로에 복사하는 식으로 사이드로드했다.
정리하면 워치페이스 하나 만드는데 넘어야 할 벽이 세 개였다. 워치 플랫폼의 5분 실행 제한(폰 컴패니언으로 우회), 실시간성(15초 폴링 + sendMessage), 그리고 macOS에서의 MTP 사이드로드. 손목에서 점수 보는 소소한 목표였는데, 플랫폼 제약을 이해하고 역할을 나누는 좋은 연습이 됐다.
덧붙이면 점수 데이터를 어디서 가져오는지는 그 출처의 이용 조건을 확인하고 쓰는 게 맞다. 개인용으로 손목에 띄우는 것과 재배포는 다른 문제다.
sendMessage).prg 사이드로드 경로
컴패니언 구조를 잡을 때는 워치 앱과 모바일 쪽이 어떤 메시지 형식을 주고받는지 Communications API에서 다시 확인했다. 폰이 점수를 가져오고 워치는 받은 상태만 그리는 경계를 유지하면 워치페이스의 실행 시간과 배터리 제약을 덜 건드릴 수 있다.
| 대용량 강의 영상을 안정적으로 백업하는 병렬 다운로드 파이프라인 짜기 (0) | 2026.07.29 |
|---|---|
| 흩어진 AI 대화 수백 개를 검색 가능한 개인 지식베이스로 묶기 (0) | 2026.07.28 |
| 바이브코딩으로 만든 중고거래 서비스를 제출 가능한 수준까지 보안 강화하기 (0) | 2026.07.27 |
| AI 에이전트 4종을 한 화면에서 보려고 로컬 관제 대시보드를 만들었다 (0) | 2026.07.27 |
| ChatGPT Plus, GitHub Copilot, Google Colab Pro 뭐가 달라? (0) | 2026.07.25 |