iOS에서 프로그래밍 방식으로 절전 모드를 비활성화 / 활성화하는 방법은 무엇입니까?


162

카운트 다운이 끝날 때까지 깨어 있어야하는 앱이 있지만 할당 된 수면 시간에 도달 할 때마다 '수면 모드'로 전환됩니다.

내 앱에는 수면을 연기하는 옵션이 있으므로 사용자가 비활성화 / 활성화 할 수 있습니다.

프로그래밍 방식으로 어떻게합니까?

답변:


379

다음과 같이 유휴 타이머를 비활성화 할 수 있습니다.

Objective-C에서 :

[UIApplication sharedApplication].idleTimerDisabled = YES;

스위프트에서 :

UIApplication.sharedApplication().idleTimerDisabled = true

Swift 3.0 및 Swift 4.0에서 :

UIApplication.shared.isIdleTimerDisabled = true

절전 모드로 다시 설정 NO하거나 false다시 활성화하십시오.

예를 들어,보기를 종료 할 때까지 필요한 경우 viewWillDisappear를 재정 의하여 다시 설정할 수 있습니다.

override func viewWillDisappear(_ animated: Bool) {
    UIApplication.shared.isIdleTimerDisabled = false
}

에 대한 자세한 UIApplication 클래스 .


@Gati 나는 그것을 의심하지만, 나는 시계가 없기 때문에 확인할 수 없다
jrturton

1
@jrturton Hmm .. Apple Watch에서 작동하지 않습니다. 이에 대한 해결책이 있다면 알려주십시오.
iGatiTech

이 정보에 감사드립니다. 편리 할 것입니다. 하나의 앱에서 절전 모드를 비활성화하면 전체 장치에 영향을 미치는지 궁금합니다. 앱에서 앱을 비활성화 한 다음 앱을 종료하는 것처럼 앱이 종료 된 후에도 여전히 비활성화됩니까? 활성화되어 있는지 확인한 다음 나가는 중에 다시 활성화해야합니까?
Scott Kilbourn

2
@ScottKilbourn 앱에만 영향을 미칩니다. [UIApplication sharedApplication]을 참조 하여 단지 응용 프로그램의 UIApplication 객체입니다.
jrturton

22

Swift 3에서 유휴 타이머를 비활성화하려면 다음과 같습니다.

UIApplication.shared.isIdleTimerDisabled = true

유휴 타이머를 다시 켜는 방법은 다음과 같습니다.

UIApplication.shared.isIdleTimerDisabled = false

또한, 참고 YESNO스위프트에서 사용할 수없는 당신이 중 하나를 사용해야 true하거나 false(이전 대답 반대).


1

유휴 타이머를 비활성화하려면 iOS 13, Swift 5,5.1 이상 . 에서 SceneDelegate.swift.

 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
     UIApplication.shared.isIdleTimerDisabled = true
 }

-5

Swift 3 에서이 작업을 수행 할 수있는 정확한 위치 -func 내부 AppDelegate.swift를 추가해야 결과가 다음과 같이 표시됩니다.UIApplication.shared.isIdleTimerDisabled = trueapplication

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    UIApplication.shared.isIdleTimerDisabled = true
    return true
}

2
이것은 AppDelegate에 의존하지 않습니다. 실제로 나는 실제 이유없이 장치를 깨우는 것이 나쁜 습관이라고 생각합니다. 문제는 특정 기능 (카운트 다운이 끝날 때까지) 동안 장치를 깨우는 것입니다. 따라서 카운트 다운이 시작될 때 유휴 타이머를 비활성화하면 카운트 다운이 끝난 후 다시 활성화 할 수 있습니다.
Martin

@ Cyrus 나는 빠른 프로그래머가 아닙니다. 현재 webview 앱을 만들고 있는데 정확한 지침없이 많은 솔루션을 시도했지만 그게 효과가 없었지만이 방법은 효과적입니다. 그래서 나는 비슷한 해결책을 찾고있는 다른 사람들과 공유하기 위해 이것을 게시합니다. 이를 사용하는 이유는 - 내 응용 프로그램은 필요가 연주하는 동안 각성 항상 것을 기타 도우미
godblessstrawberry
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.