ScreenTime 101(스크린타임 101)
많은 사람들이 ScreenTime API를 공부하고 활용할 수 있도록 참고할 수 있는 샘플 프로젝트
| 개발언어 | 프레임워크 | 플랫폼 | 개발 기한 | 팀 구성 | 비고 |
|---|---|---|---|---|---|
| Swift | SwiftUI | iOS(16.3) | 2023.09 - | 총원 2 개발(2) | 사이드 프로젝트 |
프로젝트 개요
ScreenTime API 사용 사례가 적어 프로젝트 기능 개발 시 어려움을 겪었던 경험을 바탕으로 많은 사람들이 API를 활용할 수 있게 도움이 되도록 진행한 프로젝트
해당 프로젝트는 ScreenTime API를 활용한 프로젝트 MustSleep 의 기반한 프로젝트입니다.
주요 역할
샘플 프로젝트 구조 설계 및 관리
SwiftUI를 활용한 MVVM 기반 프로젝트 구성
- View, ViewModels 분리를 통한 역할 분리
- ScreenTime API 활용을 위한 Target Groups 분리
- SwiftLint를 통한 코드 관리
- github 이슈 및 PR 컨벤션 관리 - 프로젝트 UI 구성
AppGroups를 활용한 데이터 공유 처리
서로 다른 Target 간의 데이터 공유를 위해 AppStorage, App Groups를 활용
- Base App, Shield Action, Shield Configuration, DeviceActivityMonitor와 같은 다른 타겟 구성 및 데이터 공유처리
- 스케쥴 생성 및 App Block View 간 이벤트 처리
App Block View 구현
사용자가 설정한 스케쥴에 앱 사용을 제한하는 앱 잠금 UI 개발
- Shield Action과 App Groups를 활용한 이벤트 처리
- Shield Configuration 을 통한 UI 커스터마이징
프로젝트 소개 및 기능 별 주석 작성
프로젝트를 활용해 기능 개발을 쉽게 할 수 있도록 주요 기능 소개 및 핵심코드에 대한 주석을 작성
- SwiftDoc 스타일의 주석을 활용한 핵심코드에 대한 주석 작성
- 프로젝트 구성 및 겪었던 오류사항, WWDC 영상 등에 대한 링크 작성
SwfitUI를 활용한 UI 개발
SwiftUI를 활용한 UI를 개발. - Scene, onReceive를 통한 권한 설정상태 확인 처리
- Shield Configuration 을 통한 UI 커스터마이징
- FamilyControlSelection을 통한 앱 사용제한 앱 설정 및 커스터마이징
기술스택
- FamilyControls
- DeviceActivity
- ManagedSettings
- AppGroups
- SwiftUI