nyancoder

WWDC 2021 - Meet the Screen Time API 본문

WWDC/WWDC 2021

WWDC 2021 - Meet the Screen Time API

nyancoder 2021. 7. 29. 02:43

원본 영상: https://developer.apple.com/videos/play/wwdc2021/10123/

 

  • 스크린 타임을 통해 가족이 앱과 웹사이트를 얼마나 자주 사용하는지 알 수 있습니다.
  • 제한을 설정하여 사용 시간을 관리할 수 있습니다.
  • 가족 구성원과 사용량을 공유할 수 있으며 마지막으로 누가 기기를 사용했는지 알 수 있습니다.
  • 아이들과의 소통을 더 증대시킬 수 있습니다.

  • Screen Time API가 추가되었으며 이는 100% Swift 및 SwiftUI 코드입니다.
  • 스크린 타임 기능을 앱에 제공하므로 새로운 경험을 만들 수 있습니다.
  • API는 iOS 및 iPadOS 15에서 사용할 수 있습니다.

  • Screen Time의 제약사항에 대해 직접 API 액세스를 위해 최신 디바이스 프레임워크를 제공합니다.

  • 스크린 타임은 사용한 앱이나 방문한 웹 사이트와 같은 매우 민감한 개인 정보를 처리하기 때문에 개인 정보 보호를 중심으로 두었습니다.
  • 고객의 사용 데이터는 기기 외부에서 볼 수 없습니다.

  • 개발자가 새로운 자녀 보호 환경을 만들 수 있도록 하였습니다.

  • 관리 설정을 사용하면 앱에서 계정 잠금, 비밀번호 변경 방지, 웹 트래픽 필터링, 애플리케이션 보호와 같은 여러 제한을 설정할 수 있습니다.
  • 스크린 타임과 유사하지만 앱의 기능에 따라 사용자 정의할 수 있습니다.

  • 보호자 승인 없이 Screen Time API에 액세스 하는 것을 방지합니다.
  • 보호자의 승인을 받은 앱은 보호자의 승인 없이 기기에서 제거할 수 없습니다.
  • Family Controls는 사용된 앱과 웹 사이트를 나타내는 토큰을 제공하는데, 이 토큰을 통해 Screen Time API에서 사용을 모니터링하거나 제한할 수 있지만 어떤 앱과 웹사이트가 사용되고 있는지는 알 수 없도록 합니다.

  • 장치 활동 프레임워크를 사용하면 웹 및 앱의 사용을 모니터링하고 필요할 때 코드를 실행할 수 있는 새로운 방법을 앱에 제공합니다.
  • 장치 활동 일정 및 이벤트를 통해 장치 활동의 사용량이 임계점에 도달하거나 할 때 코드를 실행할 수 있습니다.

  • 보호자의 기기와 자녀의 기기 모두에 앱을 설치한 뒤, 보호자가 자녀의 기기에서 앱을 엽니다.
  • 앱이 가족 제어로 승인되며, 보호자의 기기에 있는 앱에서 설정, 제한, 규칙을 선택합니다.
  • 앱에서는 해당 정보를 자녀의 기기로 보내고, 자녀의 기기에서는 앱이 일정 및 이벤트를 생성합니다.
  • 일정이 발생하거나 이벤트가 발생하면 앱의 코드가 호출되어 원하는 동작을 수행하게 됩니다.

  • 예제 앱인 Homework앱에서는 Family Controls에 대해 승인을 얻습니다.
  • 이후 보호자가 선택한 앱을 차단하고, 권장 앱을 충분히 사용하면 차단된 앱을 사용할 수 있게 됩니다.
  • 이외에 사용자 정의 차단 기능을 제공할 것입니다.

  • Family Controls 기능을 포함하도록 Xcode 프로젝트를 설정하려면, 프로젝트 편집기의 서명 및 기능 항목에서 Family Control을 추가해야 합니다.

  • 앱이 실행될 때 Family Control에 대한 승인을 요청하기 위해서는 위와 같은 코드를 사용할 수 있습니다.

  • 보호자로 인증하기 위해서는 Apple ID와 암호로 인증하라는 메시지 가 표시됩니다.
  • 보호자가 성공적으로 인증한 뒤, requestAuthorization을 호출하면 다시 자동으로 성공이 반환됩니다.
  • 로그인한 iCloud가 가족 공유를 사용하는 자녀가 아닌 경우 requestAuthorization는 실패를 반환합니다.

  • Family Contorl에서 기기가 인증되면 더 이상 iCloud에서 로그아웃할 수 없습니다.
  • 네트워크 확장 프레임워크로 구축된 웹 콘텐츠 필터가 자동으로 설치될 수 있으며, 설치되면 제거할 수 없습니다.

  • 내 장치에 설정된 활동 일정이 시작되면 프로그램의 코드가 호출됩니다.

  • 이 이벤트를 받기 위해서는 DeviceActivityMonitor 클래스를 상속받아서 구현해야 합니다.
  •  intervalDidStart, intervalDidEnd는 각각 일정의 시작과 종료를 알립니다.

  • DeviceActivityName과 DeviceActivitySchedule을 만들어 일정을 만들 수 있습니다.
  • repeats 설정을 통해 반복 여부를 결정할 수 있습니다.
  • startMonitoring을 호출하면 일정이 시작되고 종료될 때마다 DeviceActivityMonitor의 함수가 호출됩니다.

  • SwiftUI로 구성된 가족 활동 선택창을 통해 가족이 사용하는 앱, 웹사이트, 카테고리 목록에서 선택할 수 있습니다.
  • 선택된 결과는 불투명 토큰으로 반환됩니다.

  • intervalDidStart에서 선택된 앱들의 불투명 토큰을 얻어와서 앱의 실행 제한을 할 수 있습니다.
  • intervalDidEnd에서 제한을 nil로 설정하여 제거할 수 있습니다.

  • Shielding 이외에도 다양한 제한을 할 수 있는데, 예를 들어 계정 생성 또는 제거를 방지하거나 앱과 웹사이트를 완전히 차단하거나 연령별로 미디어 콘텐츠를 제한할 수 있습니다.

  • 미디어 제한에서는 모든 앱에서 영화 및 TV 콘텐츠에 대한 제한을 읽을 수 있는 API를 제공합니다.
  • 이 API에서는 Family Controls 승인이 필요하지 않습니다.

  • 이벤트를 참조하기 위해서 이벤트의 이름을 정해야 합니다.

  • 보호자가 선택한 권장 앱 토큰들과 해당 앱들의 사용 시간을 설정하도록 이벤트를 정의합니다.
  • startMonitoring을 호출하면 정의한 내용을 반영할 수 있습니다.

  • 이제 앱에서 활동 이벤트를 모니터링하기 때문에, 사용 임계값을 충족할 때마다 앱의 코드가 실행됩니다.
  • eventDidReachThreshold함수는 DeviceActivityEvent.Name과 DeviceActivityName을 전달받아 어떠한 이벤트가 발생했는지를 식별할 수 있습니다.
  • 이 예제에서는 이벤트를 받을 때 제한하는 응용 프로그램을 nil로 설정하여 이전에 설정된 제한을 제거합니다.

  •  스크린 타임을 이용해서 앱의 사용을 제한하는 화면을 원하는 형태로 수정할 수 있는 기능을 제공합니다.

  • ShieldConfigurationProvider를 상속받아 configuration함수가 반환하는 ShieldConfiguration 구조체를 이용하여 원하는 데로 설정할 수 있습니다.
  • ShieldConfiguration 구조체를 통하여 배경 효과, 배경색, 아이콘, 제목, 자막, 기본 버튼 레이블, 기본 버튼 배경색, 보조 버튼 레이블을 정의할 수 있습니다.
  • 앱에 의해서 차단된 모든 앱에 사용자 정의된 화면을 표시합니다.

  • ShieldActionHandler를 상속받으면 각 버튼이 눌렸을 때의 동작을 정의할 수 있습니다.
  • 기본 버튼 또는 보조 버튼이 눌렸는지 여부와 현재 제한되고 있는 앱을 알 수 있습니다.
  • 작업 응답으로 함수의 완료 핸들러를 호출해야 하며, 대상 앱을 닫거나 작업을 보류하고 화면을 다시 구성할 수 있습니다.

  • 화면을 다시 구성하는 기능을 통해서 자녀가 액세스 요청을 할 때, 보호자의 응답을 기다리고 있음을 나타낼 수 있습니다.

 

목차: https://nyancoder.tistory.com/2

Comments