iOS 디바이스의 설정에서 디스플레이 및 밝기로 가면 자동 잠금이라는 항목이 있다.
일정 시간 동안 입력이 없을 경우 화면이 어두워지다가 자동으로 화면이 잠기는 기능이다.
자동 잠금이 시작되기까지의 시간은 30초 ~ 5분까지 설정할 수 있고, 아예 자동 잠금 기능을 끌 수도 있다.
앱 내에 오랜 시간 보기만 하는 용도의 화면이 있다면, 화면 자동 꺼짐이 불편할 수 있다.
예를 들어, 시계 앱 실제 탁상시계처럼 옆에 켜 두고 쓰고 싶은데, 자동 잠금 기능 때문에 30초마다 화면이 꺼지는 상황처럼 말이다.
이 앱 하나 때문에 기기 전체의 자동 잠금 기능을 끌 수는 없는 노릇이다.
이런 문제를 해결하기 위해 앱 내에 화면 자동 꺼짐 방지 기능을 구현해보자.
Idle Timer
앱 내에서는 자동 잠금을 위한 유휴 시간을 체크하기 위해 Idle Timer가 돌아간다.
따라서 이 Idle Timer를 비활성화 시키면, 자동 잠금 되는 것을 방지할 수 있다.
Idle Timer의 비활성화 여부는 UIApplication 클래스의 인스턴스 프로퍼티로 정의되어 있다.
var isIdleTimerDisabled: Bool { get set }
이 프로퍼티 값을 true로 설정해주면 Idle Timer가 비활성화된다.
UIApplication.shared.isIdleTimerDisabled = true
공식 문서에서는 "이 속성은 필요한 경우에만 설정해야 하며 더 이상 필요하지 않은 경우 false로 재설정해야 합니다."라고 나와있다.
또한 꼭 필요한 경우는 "사용자의 인터렉션이 최소일 때도 콘텐츠를 계속 표시해야 하는 지도, 게임 앱"이라고 제시하고 있다.
꼭 필요한 경우에만 사용하라고 하는 이유는 전력 때문이다. 자동 잠금 자체가 전력 절약을 목적으로 하는 기능이다.
> 레퍼런스
https://developer.apple.com/documentation/uikit/uiapplication/1623070-isidletimerdisabled
'Apple > iOS' 카테고리의 다른 글
[iOS] 전면카메라를 사용하여 시선 추적과 표정 분석하기 - SeeSo SDK & Vision (1) | 2022.11.25 |
---|---|
[iOS] 근접 센서 사용하기 (0) | 2022.07.12 |
[iOS] 이미지 인스타그램 스토리로 공유 기능 구현하기 (0) | 2022.07.07 |
[iOS] SF Symbols에서 이미지 systemName 확인하기 (0) | 2022.05.30 |
[iOS] 백그라운드 스레드에서 타이머 돌리기 (0) | 2022.01.15 |
댓글