๋ฝ๋ฐ(LockRun) ์ โ๋ฌ๋ฆฌ๋ฉด ์ ๊ธ ํด์ ๋๋ ์ค๋งํธํฐ ์๊ธฐ ํต์ ์ฑโ์ผ๋ก, ๋ฌ๋ ๋ชฉํ(๊ฑฐ๋ฆฌยท์๊ฐ)๋ฅผ ๋ฌ์ฑํด์ผ๋ง ํน์ ์ฑ์ ์ฌ์ฉ์ด ์ ๊ธ ํด์ ๋๋ Screen Time API ๊ธฐ๋ฐ ๋์งํธ ๋ํก์ค ์ฑ์ ๋๋ค. ์ด๋ ์ต๊ด ํ์ฑ๊ณผ ์ค๋งํธํฐ ์์กด๋ ๊ฐ์๋ฅผ ๋์์ ์ด๋์ด๋ด๊ธฐ ์ํด ์ค๊ณ๋์์ต๋๋ค.
- ์ธ์ : iOS 1๋ช , Android 1๋ช
- ์งํ ๊ธฐ๊ฐ
- ๊ธฐํ : 2025.10.04 ~ 2025.10.10
- ๊ฐ๋ฐ : 2025.10.11 ~ 2025.11.09
- Deployment Target : iOS 18.0
- ๊ฐ๋ฐ ํ๊ฒฝ : Swift 6.0, Xcode 16.4
SwiftUI ยท TCA ยท SwiftData ยท Dependencies ยท ScreenTime API(DeviceActivityMonitor ยท DeviceActivityReport ยท ShieldActionDelegate ยท ManagedSettingsStore) App Group ยท CoreLocation ยท MapKit ยท WeatherKit ยท HealthKit ยท WatchKit ยท WCSession ยท CoreMotion Charts ยท Lottie ยท ActivityKit(Live Activities) ยท Testing(๋จ์ ํ ์คํธ)
| ๋ฉ์ธ ํ๋ฉด | ๋ฌ๋ ์ค ํ๋ฉด | ๋ฌ๋ ๊ฒฐ๊ณผ ํ๋ฉด | ์คํฌ๋ฆฐํ์ ์ฐจํธ |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
- FamilyControls๋ฅผ ์ฌ์ฉํด ์ฌ์ฉ์๊ฐ ์ง์ ์ฐจ๋จํ ์ฑ์ ์ ํ โ ์ ํํ ์ฑ๋ค์ ์์ด์ฝ์ UI์ ํจ๊ป ํ์
- DeviceActivityMonitor๋ฅผ ํ์ฉํด ์ฌ์ฉ์๊ฐ ์ค์ ํ ์๊ฐ๋์ ์๋์ผ๋ก ์ ๊ธ ์ค์ผ์ค์ ๋ฑ๋ก
- ManagedSettingsStore๋ฅผ ํตํด ์ ํ๋ ์ฑ์ ์ฐจ๋จ(Shield)์ ์ ์ฉ
- ๋ฌ๋ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ฉด ์ ๊ธ์ด ์๋์ผ๋ก ํด์ ๋๋ ๊ตฌ์กฐ(๋งค์ผ ๋ฐ๋ณต)
- ShieldActionDelegate๋ฅผ ์ ์ฉํ ์ฐจ๋จ ํ๋ฉด UI ์ปค์คํ
- DeviceActivityReport๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฑ ์ฌ์ฉ๋์ ๋ถ์ํ์ฌ, ๋ฌ๋ ์๊ฐ๋์ ํนํ ๋ง์ด ์ฌ์ฉํ๋ ์ฑ์ ๊ธฐ์ค์ผ๋ก โ์ฐจ๋จ ์ถ์ฒ ์ฑโ์ ์ ๊ณต
โ App Group + UserDefaults ๊ธฐ๋ฐ์ผ๋ก Main App โ Extension ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์์ ์ ์ผ๋ก ๊ณต์ ํ๋๋ก ์ค๊ณ
- ์๊ฐ/๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ ๋ชฉํ ์ค์
- CoreLocation ๊ธฐ๋ฐ ์ค์๊ฐ ์์น ์ถ์
- ์ค์ ํ ๋ชฉํ ๋๋ฌ ์ ์๋ ์ ๊ธ ํด์
- AsyncStream ๊ธฐ๋ฐ ์ค์๊ฐ ์ด๋ฒคํธ ์คํธ๋ฆผ ์ฒ๋ฆฌ
- ์์น ์ ๋ฐ์ดํธ ์คํธ๋ฆผ
- ๋ฌ๋ ํ์ด๋จธ ์คํธ๋ฆผ
- ์ฌ๋ฐ์ ์คํธ๋ฆผ
- ๋ชฉํ ๋ฌ์ฑ ๊ฐ์ง ์คํธ๋ฆผ
- ActivityKit ๊ธฐ๋ฐ ๋ฌ๋ ์ ๋ณด ์ค์๊ฐ ํ์
- Dynamic Island & Lock Screen์ ํ์ด์ค/๊ฑฐ๋ฆฌ/์๊ฐ/์ฌ๋ฐ์ ํ์
- MapKit + _MapKit_SwiftUI
- MKPolyline์ผ๋ก ์ด๋ ๊ฒฝ๋ก ์๊ฐํ
- ๋ฌ๋ ์์ ์ Lottie ์นด์ดํธ๋ค์ด ์ ๋๋ฉ์ด์ ์ ์ฉ
- (CoreMotion ์ฌ์ฉ) CMPedometer ๊ธฐ๋ฐ ํ์ด์ค/๊ฑฐ๋ฆฌ/์ผ์ด๋์ค ๊ณ์ฐ
- HKWorkoutSession ๊ธฐ๋ฐ ์ฌ๋ฐ์ ์ธก์
- WCSession์ผ๋ก iPhone โ Watch ์ค์๊ฐ ์ฌ์ฅ๋ฐ๋์ ์ ์ก
- ํ์ฌ ๊ธฐ์จ, ๊ฐ์ ํ๋ฅ , ๋ ์จ ์์ด์ฝ ํ์
- GPS ๊ธฐ๋ฐ ๋ ์จ ์ ๋ฐ์ดํธ
- ์ด ๊ฑฐ๋ฆฌ, ์๊ฐ, ๋ ์ง ์ ์ฅ
- SwiftData Model์ ํตํ ๋ฌ๋ ํ์คํ ๋ฆฌ ๊ด๋ฆฌ
- DeviceActivityReportExtension ํ์ฉ
- ์๊ฐ๋๋ณ ์ฑ ์ฌ์ฉ๋ ๊ทธ๋ํ ์ถ๋ ฅ(Charts)
- ๋ฌ๋ ์๊ฐ๋์ ๋ง์ด ์ฌ์ฉํ๋ ์ฑ์ ๋ถ์ํ์ฌ ์ฑ ์ฐจ๋จ ์ถ์ฒ
- ์ปค์คํ ๋ฌ๋ ฅ์ผ๋ก ์๋ณ ๋ฌ๋ ๊ธฐ๋ก ์๊ฐํ
- ํ๋กํ ํธ์ง ๊ฐ๋ฅ
๋ฝ๋ฐ์ ์ค์๊ฐ ์คํธ๋ฆผ ๋ฐ์ดํฐ๊ฐ ๋ง๊ณ ๊ธฐ๋ฅ ๊ฐ ์ํ ์์กด๋๊ฐ ๋์ TCA๋ฅผ ์ฑํํ์ต๋๋ค.
- Reducer ๋จ์๋ณ๋ก ๋ถ๋ฆฌ
- ๋ช ํํ Action โ Reducer โ State ๊ตฌ์กฐ
- Dependencies๋ก Side Effect ๋ถ๋ฆฌ
- ํ ์คํธ ๊ฐ๋ฅํ ๊ตฌ์กฐ
- ์ค์ฝํ ํ์ฅ์ผ๋ก ํ๋ฉด ๊ฐ ์ก์ ์ฒด๊ณ์ ๊ด๋ฆฌ
ScreenTime ๊ด๋ จ ๊ธฐ๋ฅ(DeviceActivityMonitorExtension)์ ๋ฉ์ธ ์ฑ๊ณผ ์์ ํ ๋ ๋ฆฝ๋ Extension์ผ๋ก ์คํ๋๊ธฐ ๋๋ฌธ์, ์ค๊ธฐ๊ธฐ ์ฐ๊ฒฐ ํ print, log ๋ฅผ ์ถ๋ ฅํด๋ Xcode ์ฝ์์์ ๋ก๊ทธ๋ฅผ ํ์ธํ ์ ์์๋ค.
์ฆ, ๊ฐ์ด ์ ๋๋ก ๋ค์ด์ค๋์ง ๋ชจ๋ํฐ๋ง ๋ก์ง์ด ์ ์ ์คํ๋๋์ง Shield/Monitor ์ค์ผ์ค์ด ์ค์ ๋ก ์ ์ฉ๋๋์ง ์ ํ ํ์ ํ ์ ์๋ ์ํ์๋ค.
๋ฉ์ธ ์ฑ(Target: App)์ ์ ํํ๋ฉด ๋ฉ์ธ ์ฑ์์ ๋ฐ์ํ๋ ๋ก๊ทธ๋ง ์ถ๋ ฅ๋๋ฉฐ, ๋ชจ๋ํฐ๋ง Extension(Target: DeviceActivityMonitorExtension)์ ๋ณ๋์ ํ๋ก์ธ์ค๋ก ๋์ํ๋ค.
์ฆ, ๋ฉ์ธ ํ๊น์ผ๋ก ์คํ โ ๋ชจ๋ํฐ๋ง Extension ๋ก๊ทธ ํ์ธ ๋ถ๊ฐ Extension ํ๊น์ผ๋ก ์คํ โ ๋ฉ์ธ ์ฑ ๋ก๊ทธ ํ์ธ ๋ถ๊ฐ ์๋ก ๋ ๋ฆฝ๋ ๋ ์ฑ์ด๊ธฐ ๋๋ฌธ์ ํ๋์ ์ฝ์์์ ๋ชจ๋ ๋ณผ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ ์์.
Xcode ์คํ ํ๊น์ DeviceActivityMonitorExtension โ My iPhone์ผ๋ก ์ค์ ํ์ฌ ๋ชจ๋ํฐ๋ง Extension์ ์คํ ๋ก๊ทธ๋ ํ์ธํ ์ ์์๋ค.
ํ์ง๋ง ์ด ๊ฒฝ์ฐ, ๋ฉ์ธ ์ฑ์ด ์คํ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ฉ์ธ ๋ก์ง ์ฑ ๋ก๊ณ ๋ฅผ ํ์ธํ ์ ์๋ค๋ ๋ฌธ์ ๊ฐ ์๋ก ์๊น.
Extension๊ณผ App ๊ฐ ํต์ ์ App Group UserDefaults๋ฅผ ํตํด ๊ฐ๋ฅํ๋ค๋ ์ ์ ํ์ฉํด, Extension์์ ํน์ ๊ฐ์ด๋ ํ๋๊ทธ๋ฅผ UserDefaults(suiteName:)์ ๊ธฐ๋กํ๋๋ก ๋ง๋ค์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฉ์ธ ์ฑ์์๋ ์ด ๊ฐ์ ํ ์คํธ๋ก ์ค์๊ฐ ํ์ํ๋ ๊ฐ๋จํ Debug View๋ฅผ ๊ตฌ์ฑํ๋ค.
์์ ํ๋ฆ:
- Extension์์ ์ด๋ฒคํธ ๋ฐ์ โ App Group์ write
- ๋ฉ์ธ ์ฑ์ Debug View์์ read โ ์ฆ์ UI ์ ๋ฐ์ดํธ
- ์ฝ์ ๋ก๊ทธ๊ฐ ์์ด๋ Extension ๋์์ ์ค์๊ฐ์ผ๋ก ํ์ธ ๊ฐ๋ฅ
๊ธฐ์กด์ฒ๋ผ ์ฝ์ ๋ก๊ทธ๋ฅผ ์์กดํ์ง ์๊ณ ๋ ๋ชจ๋ํฐ๋ง Extension์ด ์ค์ ๋ก ์ด๋ค ์ด๋ฒคํธ๋ฅผ ๋ฐ์๋์ง, ์ค์ผ์ค์ด ์คํ ์ค์ธ์ง, ํ ํฐ์ด ์ ์์ผ๋ก ์ฝํ๋์ง ๋ฉ์ธ ์ฑ ํ๋ฉด์์ ๋ฐ๋ก ํ์ธํ ์ ์์๋ค. ๋ ํ๋ก์ธ์ค์ ๋ก๊ทธ๋ฅผ ๋ชจ๋ ์ถ์ ํ๊ธฐ ์ด๋ ค์ด Extension ๊ตฌ์กฐ์ ํ๊ณ๋ฅผ App Group + Debug View ๋ฐฉ์์ผ๋ก ํด๊ฒฐํจ.
๋ฝ๋ฐ์ ์ผ๋ฐ์ ์ธ ๋ฌ๋ ์ฑ์ ๋์ด
โํ๊ฒ ๊ฑฐ๋ฆฌ ๋๋ฌ โ ์ฑ ์ ๊ธ ํด์ โ๋ผ๋ ๋
ํนํ UX๋ฅผ ๊ตฌํํด์ผ ํ๊ธฐ ๋๋ฌธ์
ScreenTime API ยท HealthKit ยท watchOS ยท ActivityKit ยท TCA ๋ฑ์ด ๋ชจ๋ ๊ฒฐํฉ๋ ๋ณต์กํ ๊ตฌ์กฐ์์ต๋๋ค.
ํนํ Extension ๊ฐ ํต์ , Live Activity ์ ์ง, ์ค์๊ฐ ์์น/์ฌ๋ฐ์ ์คํธ๋ฆผ ๋ฑ ๋ค์ํ ๋ณตํฉ ๊ธฐ์ ์ด ๋์์ ์๋ํด์ผ ํ์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ธฐ๋ฅ ๋จ์๋ก Reducer๋ฅผ ๋ช
ํํ ๋ถ๋ฆฌํ๊ณ , App Group ๊ธฐ๋ฐ ํต์ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ์ฌ ์์ ์ฑ๊ณผ ํ์ฅ์ฑ ๋ชจ๋ ํ๋ณดํ ์ ์์์ต๋๋ค.
ํฅํ์๋ UI/UX ๋์์ธ์ ๋์ฑ ์ ๊ตํ๊ฒ ๋ค๋ฌ๊ณ , ๋ฌ๋ ์ค ์ฌ์ฉ์ ๋๊ธฐ๋ถ์ฌ๋ฅผ ์ค ์ ์๋ ์ถ๊ฐ ๊ธฐ๋ฅ(์นญ์ฐฌ ์์คํ
, ๋ฐฐ์ง, ํ์คํ ๋ฆฌ ํต๊ณ ๊ฐํ ๋ฑ)์ ํ์ฅํด ๋๊ฐ ์์ ์
๋๋ค.



