์ด ์ฑ์ iOS ๋ฐ Android ๋ฒ์ ์ผ๋ก ๊ฐ๊ฐ ๊ฐ๋ฐ๋์์ผ๋ฉฐ, ์ฌ์ฉ์์ ๋ณดํญ, ๊ฑธ์ ์๋, ๊ฑท๊ธฐ ๊ฑฐ๋ฆฌ ๋ฑ์ ์ค์๊ฐ์ผ๋ก ๋ถ์ํ์ฌ ์ฌ์ฉ์์๊ฒ ์ ์ ํ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ณ ๋ น์๋ค์ด ๋ณด๋ค ๊ฑด๊ฐํ ์ํ์ ์์ํ ์ ์๋๋ก ๋๊ณ , ์ด๋ ๋ฅ๋ ฅ์ ํฅ์์ํค๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค.
์ฑ ์์ฐ ์์: https://m.site.naver.com/1oDHS
- UIKit
- Combine
- CoreMotion
- CoreLocation
- MapKit
- SnapKit
- Then
- Alamofire
์ด ํ๋ก์ ํธ๋ Clean ์ํคํ
์ฒ์ MVVM ์ํคํ
์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ ์์ผ๋ฉฐ, Coordinator Pattern ํจํด์ ํตํด ํ๋ฉด์ ํ ๋ก์ง์ ๋ถ๋ฆฌํ์ต๋๋ค.
๊ฐ ๊ณ์ธต์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋ฉ๋๋ค:
Presentation Layer: ViewController(UI)์ ViewModel(MVVM ํจํด)์ด ์กด์ฌํ๋ฉฐ, ํ๋ฉด์ ํ์ ์ํด Coordinator๋ฅผ ํ์ฉํ์์ต๋๋ค.
Domain Layer: UseCase๋ฅผ ํตํด ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ฉฐ, Repository Protocol์ ํ์ฉํ์ฌ Repository์์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ท์ต๋๋ค.
Data Layer: ๋คํธ์ํฌ ๋ฐ ์ผ์๋ฑ์ ๋ฐ์ดํฐ๋ฅผ Repository์์ ์ฒ๋ฆฌ.
ํนํ Domain Layer์๋ UseCase๋ฟ๋ง ์๋๋ผ UseCase Protocol์ ํฌํจํ์ฌ, Data Layer์ Repository Protocol๊ณผ ๋ถ๋ฆฌํ์ฌ ์์กด์ฑ์ ์ต์ํํ๋ ค ํ์ต๋๋ค. ์ด๋ฅผ ํตํด UseCase๋ ํน์ ๋ฐ์ดํฐ ์์ค์ ์ข
์๋์ง ์๊ณ , ๋ณด๋ค ์ ์ฐํ ๊ตฌ์กฐ๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
๊ท๋ชจ๊ฐ ํฌ์ง ์์ Coordinator๋ด์์ ์์กด์ฑ ์ฃผ์
์ ํ์์ต๋๋ค.
AppCoordinator๋ ์ฑ ์์ ์์ ์์ ๋ก๊ทธ์ธ ํ๋ก์ฐ(LoginCoordinator)์ ๋ฉ์ธ ํ๋ก์ฐ(TabCoordinator)๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
TabCoordinator๋ ๊ฐ ํญ์ ํด๋นํ๋ ํ์ Coordinator(StrideCoordinator, TogetherCoordinator)์ ์์ฑํด ํ๋ฉด์ ์ด๊ธฐํํฉ๋๋ค.
StrideCoordinator๋ ๋ฉ์ธ ํญ ๋ด์์ ์ด๋ ๊ด๋ จ ํ๋ฉด(ExerciseViewController ๋ฑ)์ ํ๋ฆ์ ์ ์ดํฉ๋๋ค.
- CoreMotion์
PedometerData๋ฅผ 20์ด ๊ฐ๊ฒฉ์ผ๋ก ๋น๋๊ธฐ์ ์ผ๋ก ์์ง ๋ฐ ๋ถ์ํฉ๋๋ค. - ๋ชฉํ๋ฅผ ๋ฏธ๋ฌํ ๊ฒฝ์ฐ, ๋ถ์กฑํ ๋ฐ์ดํฐ๋ฅผ Combine์ ํตํด ๋ฐฉ์ถํ๊ณ , UseCase๋ฅผ ํตํด ViewModel์์ ๊ตฌ๋ ํ์ฌ ๋ทฐ๋ก ์ ๋ฌํฉ๋๋ค.
queryPedometerData๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์๊ฐ๋์ ๊ฑท๊ธฐ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ํํ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค.
- Xcode Gauges๋ฅผ ํ์ฉํ์ฌ CoreLocation์
desiredAccuracy์distanceFilter๋ฅผ ์กฐ์ ํ์ฌ, ๋งต ๊ฒฝ๋ก์ ์ ํ๋์ ์๋์ง ํจ์จ์ฑ ๊ฐ์ ์ต์ ๊ท ํ์ ๋ง์ท์ต๋๋ค. distanceFilter๊ฐ์ ๋ฐฐํฐ๋ฆฌ ์๋ชจ์ ์ง์ ์ ์ธ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉฐ, ์์น ์ ๋ฐ์ดํธ ๋น๋๋ฅผ ์กฐ์ ํ๋ ์ญํ ์ ํฉ๋๋ค.desiredAccuracy๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ํ๋ฉด ์๋์ง ์๋น๊ฐ ๋ง์์ผ๋,kCLLocationAccuracyNearestTenMeters๋ก ์ค์ ํ์ฌ 10๋ฏธํฐ์ ์ค์ฐจ๋ฅผ ํ์ฉํ๋ฉด์๋ ์๋์ง ํจ์จ์ฑ์ ์ ์งํ ์ ์์์ต๋๋ค.
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ผ์ค ํ์ ์ ๊ณต๋ฉ๋๋ค.
- KCC2024 ๋ ผ๋ฌธ ๋ฐํ ๋ฐ ์ฅ๋ ค์ ์์