Hourglass - Workout Timer
1. 앱 현재 상태
데모 및 간단 소개
쉐이크 모션을 사용하여 타이머를 활성화 시키고, 이를 이용하여 운동 중 쉬는 시간을 관리할 수 있습니다. 이외에 운동 루틴을 관리하고, 무게 / 횟수 / 시간 을 운동 별로 설정할 수 있습니다
Demo.mp4
- 초기 컨셉인 흔들어서 타이머를 활성화 시키는 기능을 구현
- 무게, 횟수, 시간초를 설정하여 세트를 만들고, 이를 조합하여 루틴을 만들 수 있음
2. 구현하지 못한 점들 및 업데이트 계획
예상 다이어리 화면
다이어리 입력 화면 / 콜렉션 뷰를 input뷰로 설정
- 운동을 기록하는 다이어리(메모장 기능)
- 루틴 또는 운동을 입력할 때 타이핑이 아니라, 콜렉션 뷰를 선택하여 입력하는 기능
- 설정 화면 및 기능들 ( 다국어 지원 / 파운드, kg 단위 지원 / 백업 복구), 온보딩 뷰(기초 설명)
- Realm 마이그레이션
- 운동 프리셋 제공
- 타이머 백그라운드
- 노티피케이션 기능
- 사용자 알림 - 진동 강화, 토스트 메시지 등
- 통화 중 또는 다른 작업 시 타이머 취소와 리셋 구현
- 오픈소스 라이선스 고지의무
3.이슈
- 탭바에 있는 특정 화면 로드 : selectedIndex → 커스텀 탭바로 해결
- 커스텀 Tabbar를 사용할 경우, 아이폰 8화면에서의 탭바가 깨짐(수정 중)
- 테이블 뷰에서 스크롤을 내릴 시, 탭 바 색깔이 변하는 이슈 : 커스텀 탭바로 해결
- 텍스트 필드 입력 글자 수 제한
- Realm 테이블 구조(오브젝트)에는 FK가 없어서 어떻게 접근할지 고민하였음
- Routine, Workout 그리고 Set의 종속 구조
4. 느낀 점
- 앱을 만들면서 예상 공수와 실제 공수의 차이로 인해 딜레이가 발생했고, 예상 공수 산정을 넉넉하게 두어야겠다.
- 출시날이 다가오니까 소스가 점점 스파게티 소스가 되었음. 클린 코드 열심히 읽었는데 적용을 하나도 못했다.
- 버그 수정하고 리팩토링하면서, 기능을 Manager로 만들어서 분리해야할 필요성 느낌.
- 데이터 CRUD하는 화면 및 전체 화면 전환의 설계를 처음부터 제대로 하지 않으면, 나중에 고생 함.