4번째 프로젝트의 진행 기록
📢 프로젝트 소개
- 프로젝트명: 일어나시계 (WakeUpClock)
- 프로젝트 일정: 24.05.13 ~ 24.05.24 (2주)
- 프로젝트 인원: 4명
- GitHub 링크: https://github.com/Team-Googling/WakeUpClock
- 사용 기술: MVC, UIKit, SnapKit, Singleton, Delegate
⏰ 세계 시계, 알람, 타이머, 스톱워치 기능을 제공하며 백그라운드 알림이 가능한 iOS 앱
🛠️ 설계
👩🏻💻 담당 역할
- 스톱워치 UI 및 기능 설계
- 스톱워치 랩 타임 CRUD 구현
- 랩 타임 기록, Lap 및 Record 타임 계산 기능 개발
- 세계 시계 UI 및 기능 구현 (TimeZone을 활용한 시간 데이터 포맷팅 구현
- Dark/Light 모드 구현
- 발표 및 ppt 제작
🗓️ 개발 일정
SA 제출 → 각자 맡은 화면 개발 → 디테일 수정 및 오류 개선
📺 WireFrame
- Light Mode / Dark Mode 구분한 UI 구성
- 요소 및 사용하는 아이템과 색상코드 설정
📑 프로젝트 규칙
깃허브로 협업하며 헷갈릴 수 있는 규칙들을 팀노션에 정리하여 참고하여 사용했다. (아래 rule 정리 파트)
매일 두번의 회의를 진행하면서 작업 내용을 공유하고 작업한 내용 병합을 함께 진행하며 소통하는 시간을 가졌다.
또한 회의하며 정한 내용이나 그날그날의 진행사항을 파악할 수 있도록 회의록도 함께 작성했다.
▼ rule 정리
더보기



💡 깃허브 규칙 & 커밋 메시지 규칙


💡 이슈 및 브랜치 생성 규칙 → Pull reqests에 작업한 내용 업로드


💡 작업 내용 공유 & 회의록 작성


💻 개발
1) Clock Page
- 탭바의 첫 화면 Clock Page: Timezone을 활용하여 세계 시간을 보여줌
- 세계시간 & 내 위치의 현재 시간과의 시차 확인 가능
- 전체적으로 앱의 상단 네비게이션바에는 다크모드와 라이트모드를 전환할 수 있는 버튼이 존재
2) New Alarm Page
- 알람 설정 Page: 네비게이션 우측 플러스 버튼을 통해 화면을 모달로 확인
- UIPickerView로 알람 시간 설정
- 원하는 요일에 체크박스와 이름 설정 가능
- 코어 데이터에 알람 정보 저장
3) Alarm List Page
- 알람 리스트 Page: 설정한 알람 목록 확인
- 스위치를 통한 알람 설정
- 설정한 시간에 Push 알림과 사운드 재생
- 스와이프로 CoreData 삭제
4) Timer Page
- 타이머 Page: Duration Picker를 사용한 시간 설정
- 타이머 실행 시 코어데이터에 저장
- 최근 타이머 목록에서 확인 & 실행 가능
5) Stopwatch Page
- 스톱워치 Page: 실행하면 분, 초, 밀리세컨드 단위로 시간 흐름
- 랩타임 기능 → 이전 기록과의 시간 차이 & 측정 시간 기록
- 버튼 상태 변화
📌 트러블 슈팅
1) 스톱워치 LapTime 코어데이터 적용
- 🚨 문제점
- 스톱워치의 LapTime을 코어데이터에 적용하는 과정에서 랩 타임과 타이머 기록을 혼합하여 저장하는 문제 발생
- 💡 해결 방법
- 랩 타임과 타이머 기록을 분리하여 각각 코어데이터에 저장하고 관리, 데이터 처리 방식 개선
2) 푸시 알람 삭제 문제 해결
- 🚨 문제점
- 푸시 알람 삭제 시 특정 알람이 삭제되지 않거나 잘못된 알람이 삭제되는 문제 발생
- 💡 해결 방법
- 알람 고유 식별자를 기반으로 푸시 알람을 정확히 삭제하는 로직을 구현
- 알람 객체의 id 속성을 활용하여 데이터 처리 오류 해결
- 각 반복 요일을 포함한 고유 식별자 생성을 통해 정확한 알림 삭제
- 테이블 뷰 인덱스가 아닌 알람 객체의 id를 기준으로 데이터 삭제
- 알람 고유 식별자를 기반으로 푸시 알람을 정확히 삭제하는 로직을 구현
📝 kpt 회고
keep
- 회의록 작성 및 github PR, Merge시 팀원들과 협업한 점
- 이슈, pr 템플릿을 활용하여 작업 내용 파악이 잘 된 점
- 모든 의견을 무조건 수용 하는 것보다 본인 의견을 확고하게 내었던 점
- 회의록 작성을 통해 팀 이슈를 기록한 것
- 깃허브 규칙을 정하고 작업한 점
Problem
- 초반에 디자인, 기능 구현등에 대한 소통이 부족했던 점
- 구현에 어려움이 있을 때 적극적으로 공유하지 않은 점
- 더 좋은 코드의 구조를 고민할 시간이 부족했던 점
- 피그마 사용이 미숙하여 UI 구현에 많은 시간 할애한 점
Try
- MVVM 패턴을 사용하여 설계하기
- 팀원들과 원활히 소통하며 서로 생각을 공유할 것
- 어려운 사항이 있으면 바로 팀원들에게 공유하기
- 새로운 라이브러리, 툴 사용에 익숙해지기
Feel
- 코드 베이스 구현 및 파일 분리, 코드 정리 공부하기
- 효율적인 코드 구성을 위한 고민이 필요하다는 것을 느꼈다.
- push 알림을 사용하여 구현하니 진짜 앱을 만드는 것 같아 신기했다.
'Project💡' 카테고리의 다른 글
[FlutterFlow] 플러터플로우로 만드는 나만의 액셀봇 앱 🤖 (0) | 2025.02.03 |
---|---|
[Project/iOS] 식목일: 식단과 운동 기록으로 매일 조금씩 더 건강하게 (0) | 2024.12.20 |
[Project/iOS] 8색조 - BirdCinema 영화 예약 앱 (2) | 2024.05.04 |
[Project/iOS] if조 - MacDonald's 키오스크 앱 (0) | 2024.04.16 |
[Project/iOS] 스린이들 - 팀 소개 App (2) | 2024.03.08 |