RunWay 1.2 (5) TTS 마무리 & CloudKit 백업 기능
km 스플릿 음성 안내는 이미 붙였는데, 원래 계획했던 오디오 콜아웃엔 시작 카운트다운이랑 터치다운 때 안내도 포함돼 있었다. 그리고 v1.2b 로드맵에 남은 큰 항목이 로컬 기록 CloudKit 백업이라 먼저 어떻게 할지 생각을 해보고 구현을 해보기로한다. 오디오 콜아웃 남은 부분 TakeoffView엔 이미 ROTATE 버튼을 누르면 3, ...
km 스플릿 음성 안내는 이미 붙였는데, 원래 계획했던 오디오 콜아웃엔 시작 카운트다운이랑 터치다운 때 안내도 포함돼 있었다. 그리고 v1.2b 로드맵에 남은 큰 항목이 로컬 기록 CloudKit 백업이라 먼저 어떻게 할지 생각을 해보고 구현을 해보기로한다. 오디오 콜아웃 남은 부분 TakeoffView엔 이미 ROTATE 버튼을 누르면 3, ...
워치는 러닝 종료 버튼이 2초 길게 눌러야 확인되는 방식인데, 아이폰 PFDView의 TOUCHDOWN 버튼은 그냥 한 번 탭하면 바로 종료된다. 뛰다가 화면을 잘못 건드리면 러닝이 그대로 끝나버리는 문제라 아이폰도 같은 방식으로 바꿨다. 겸사겸사 시뮬레이터로 오래 뛰어보다가 발견한, 스플릿 목록이 하단 탭바에 가려지는 문제도 같이 고쳤고, Fligh...
이전글에서 km 스플릿 기능을 다 붙였다. 로드맵상 다음 순서는 이 스플릿이 끊길 때마다 화면을 안 봐도 페이스/심박/케이던스를 음성으로 읽어주는 기능이다. 이제 이 과정을 기록해본다 스플릿 재활용 이전글에 적었던 recordSplitSample(at:)을 다시 보면, while 루프 안에서 1km 경계를 넘을 때마다 그 구간의 평균 페이스/...
이전글에서 심박 미션 버그를 다 잡고, 이번엔 다음 순서였던 km 단위 스플릿 기능으로 넘어왔다. 러닝 하나를 1km마다 끊어서 그 구간 페이스/심박/케이던스를 따로 기록하는 기능이다. 케이던스도 심박처럼 받아두기 HealthCenter가 지금까지 심박만 들고 있었는데, 스플릿엔 케이던스도 필요해서 똑같은 방식으로 하나 더 추가했다. acto...
이전글에서 1.1 핫픽스가 승인나고, 다시 심박 기능 브랜치로 돌아왔다. 버전을 1.2로 올리고(핫픽스가 이미 1.1을 써버려서), 핫픽스에서 고친 내용도 이 브랜치에 옮겨왔다. 그러고 나서 지금까지 한 번도 안 해본 조합으로 테스트를 해봤다. 아이폰이 주도하고 워치가 미러링하는 상태로, 심박 기준 Mission Flight를 뛰어본 거다. 여기서 ...
심박 기반 러닝 모드를 만들다가 이전글에서 reset()이 modeAData를 지우는 진짜 원인을 찾았다. 확인해보니 이 문제는 지금 작업 중인 브랜치에서 생긴 게 아니라 원래 배포된 버전(v1.0)에도 그대로 있는 문제였다. 지금 실제로 앱을 쓰고 있는 사람들한테는 Mission Flight GPWS가 페이스든 심박이든 계속 안 뜨고 있었다는 뜻...
이번엔 심박 기반 러닝 모드를 넣어보려고 한다. 지금까지 Mission Flight는 페이스 기준으로만 목표를 설정했는데, 지인이 요즘은 페이스 대신 심박수를 기준으로 훈련하는 방식도 많이 쓴다고 추천해줬다. 페이스는 그날 컨디션이나 날씨, 오르막/내리막 같은 지형에 따라 쉽게 흔들리는데, 심박수는 몸이 실제로 받는 부하를 좀 더 직접적으로 보여준다...
네비게이션 헤더를 바꿔보려고한다. 사실 의식을 하지 않고있었는데, 새로운 기능을 준비중이라 AI에게 관련 기능을 설명하고 mockui를 받고, 또 그걸 swiftui로 그리게 했는데 UI를 확인해보던 중 Custom Navigation Header 가 눈에 띄였다. 그래서 이걸 아예 디폴트로 해서 헤더를 바꿔보려고 한다. 이걸 이런식으로...
갑자기 문득 생각해보니 항상 워치 테스트할때는 기록을 해야해서 핸드폰을 같이 들고 다녔다. 그러다보니 워치 단독으로 러닝했을때의 시점은 정확하게 체크가 된것이 아니었다. 그래서 아이폰은 집에 두고 워치만 차고 마트에 갔다. 가는 길에 한 번, 오는 길에 한 번, 러닝을 두 번 따로 종료했다. 집에 와서 앱을 켜봤는데 Logbook에 아무 기록도 없었...
이전글 에서 미러링 범위를 축소하고 재제출 준비까지 마쳤는데, 이번엔 다른 사유로 리젝을 받았다. 리젝 사유 - Guideline 2.1 Information Needed 버그가 아니라 “정보가 부족해서 심사를 계속할 수 없다”는 사유였다. Guideline 2.1 - Information Needed - New App Submissio...