본문으로 건너뛰기

ScreenTime 101(스크린타임 101)

많은 사람들이 ScreenTime API를 공부하고 활용할 수 있도록 참고할 수 있는 샘플 프로젝트

개발언어프레임워크플랫폼개발 기한팀 구성비고
SwiftSwiftUIiOS(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

링크