스크린타임(Screen Time) - iOS

PM077·2023년 4월 26일
0

iOS

목록 보기
19/21

웹 사용량 정보를 공유하고 나누며 부모님이나 보호자의 변경사항을 탐지하는 기능.
(iOS 14.0+, iPadOS 14.0+, macOS 11.0+, Mac Catalyst 14.0+)

개요

스크린타임 프레임워크는 아이들의 웹 사용량을 관리감독하기 위해 보호자에게 도구를 제공한다. 이 프레임워크는 주로

  • 웹 사용량 보고
  • 기록 삭제
  • URL 차단이나 아이들을 제제할 때
    사용이 된다.




사용되는 클래스

필수

class STWebpageController

  • 웹사용량을 보고하고 제제된 웹페이지를 막는 클래스

선언하는 방법

class STWebpageController : UIViewController

개요

이 클래스는 미디어의 시작과 정지 같은 각 페이지의 변경을 쉽게 감지하도록 방법을 제공한다. 만약 보호자가 차단한 URL이 웹페이지 컨트롤러 실행이 되면

  • 자동으로 웹페이지 콘텐츠를 막는다.
  • urlIsBlocked 프로퍼티를 업데이트 시킨다
    예를들어 urlIsBlocked 프로퍼티가 true로 바뀌면 미디어를 멈추는 동작을 실행 시킬 수 있다.

IMPORTANT
각 웹페이지와 탭에 웹페이지 컨트롤러를 생성하고 웹페이지 콘텐츠 위에 추가해야한다.

사용되는 변수

1. var suppressUsageRecording: Bool

  • 웹페이지 사용량을 기록할지 말지 Boolean값으로 설정
  • var suppressUsageRecording: Bool { get set }
  • True로 바꾸면 웹 데이터 사용량 감지 및 보고를 멈춘다.

2. var url: URL?

  • 웹페이지의 URL
  • var url: URL? { get set }
  • 유저가 새로운 URL을 들어갈 때 여기서 URL값을 재설정 해주면 된다.

3. var urlIsBlocked: Bool

  • 보호자가 특정 URL을 차단했는지 감지하는 Boolean
  • var urlIsBlocked: Bool { get }
  • 보호자가 URL을 차단했다면 webpage controller가 막았다는 UI를 보여주고 이 프로퍼티 Boolean값을 True로 재설정 한다

4. var urlIsPictureInPicture: Bool

  • 웹페이지가 picture window의 floating picture에 나타나 있는지 확인하는 Boolean이다.
  • var urlIsPictureInPicture: Bool { get set }
  • 기본값은 false이다
  • 웹페이지가 floating picture에서의 유무에 따라 값이 달라진다.

5. var urlIsPlayingVideo: Bool

  • 현재 웹페이지에서 1개이상의 비디오가 재생되는걸 Boolean값으로 감지한다
  • var urlIsPlayingVideo: Bool { get set }
  • 기본값은 false이다
  • 웹페이지가 비디오를 시작하고 멈출 때 해당 값이 달라진다.




형태 감지 쿼리

class STScreenTimeConfigurationObserver

  • 현재 상태를 감지하는 클래스

선언하는 방법

class STScreenTimeConfigurationObserver : NSObject

개요

현재 상태를 감지할 때 이 클래스를 사용한다. 예를 들어, enforcesChildRestrictions가 True일 때 웹브라우저의 뷰컨트롤러를 disable하게 선택할 수 있다.

사용되는 변수

1. init(updateQueue: DispatchQueue)

  • 큐를 활용해 지정한 상태를 보고하는 상태 감시자를 생성한다.
  • init(updateQueue: DispatchQueue)
  • 파라미터에 updateQueue는 업데이트 되는 큐이다.

2. var configuration: STScreenTimeConfiguration?

  • 감시되는 구성품
  • var configuration: STScreenTimeConfiguration? { get }

3. func startObserving()

  • 특정 대상의 상태 변경을 감시하기 시작한다
  • func startObserving()

4. func stopObserving()

  • 특정 대상의 상태 변경을 감시하기를 멈춘다
  • func stopObserving()

class STScreenTimeConfiguration

  • 이 디바이스의 구성

선언하는 방법

class STScreenTimeConfiguration : NSObject

사용되는 변수

1. var enforcesChildRestrictions: Bool

  • 현재 디바이스가 아이들을 위한 제제 프로그램이 실행되고 있는지 판단하는 Boolean이다
  • var enforcesChildRestrictions: Bool { get }




웹 사용량 데이터 삭제

class STWebHistory

  • 웹 사용량 데이터를 삭제할 때 필요한 도구

선언하는 방법

class STWebHistory : NSObject

개요

이 클래스는 손쉽게 웹 검색기록을 삭제해준다. 방법은:

  • 모든 기록
  • 특정 URL과 관련된 기록
  • 특정 시간동안의 기록

사용되는 변수

1. init(bundleIdentifier: String)

  • 웹 히스토리 인스턴스를 만들어 사용자가 bundle identifier에 지정한 웹의 사용 데이터를 삭제한다.
  • init(bundleIdentifier: String) throws
  • bundleIdentifier의 기본값은 Bundle.main.bundleIdentifier이다

2. func deleteAllHistory()

  • 특정 시점부터 bundle identifier로 지정한 웹 기록들을 삭제한다
  • func deleteAllHistory()

3. func deleteHistory(during: DateInterval)

  • 지정한 기간 내의 모든 웹 기록들을 삭제한다.
  • func deleteHistory(during interval: DateInterval)
  • 여기서 interval은 웹기록을 삭제하고 싶은 날짜이다.

4. func deleteHistory(for: URL)

  • 선언한 모든 URL의 웹 기록을 삭제한다.
  • func deleteHistory(for url: URL)
  • 여기서 url은 웹기록을 삭제하고자 하는 URL을 넣으면 된다.

https://developer.apple.com/documentation/screentime

profile
PM/PO

0개의 댓글