웹 사용량 정보를 공유하고 나누며 부모님이나 보호자의 변경사항을 탐지하는 기능.
(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