Skip to content

sunhofficial/GND

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

73 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

GND

์ด ์•ฑ์€ iOS ๋ฐ Android ๋ฒ„์ „์œผ๋กœ ๊ฐ๊ฐ ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž์˜ ๋ณดํญ, ๊ฑธ์Œ ์†๋„, ๊ฑท๊ธฐ ๊ฑฐ๋ฆฌ ๋“ฑ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ถ„์„ํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ์ ˆํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ณ ๋ น์ž๋“ค์ด ๋ณด๋‹ค ๊ฑด๊ฐ•ํ•œ ์ƒํ™œ์„ ์˜์œ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ณ , ์šด๋™ ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•ฑ ์‹œ์—ฐ ์˜์ƒ: https://m.site.naver.com/1oDHS

๊ธฐ์ˆ  ์Šคํƒ

  • UIKit
  • Combine
  • CoreMotion
  • CoreLocation
  • MapKit
  • SnapKit
  • Then
  • Alamofire

์•„ํ‚คํ…์ฒ˜

Image ์ด ํ”„๋กœ์ ํŠธ๋Š” 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 ๋…ผ๋ฌธ ๋ฐœํ‘œ ๋ฐ ์žฅ๋ ค์ƒ ์ˆ˜์ƒ

About

for elderly person walking using HealthKit and cremation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages