Как предотвратить блокировку экрана в моем приложении с помощью Swift на iOS


113

Как отключить блокировку экрана только при использовании навигации?

У Waze есть возможность сделать это, как я могу сделать это в своем приложении?

Ответы:


241

Использовать это:

Цель-C:

[[UIApplication sharedApplication] setIdleTimerDisabled: YES];

Swift (устаревший):

UIApplication.sharedApplication().idleTimerDisabled = true

Swift 3 и выше:

UIApplication.shared.isIdleTimerDisabled = true

Обязательно импортируйте UIKit.

Вот ссылка на документацию с сайта apple.developer.com.


4
Swift должен бытьUIApplication.sharedApplication().idleTimerDisabled = true
Дуг

3
Swift 3:UIApplication.shared.idleTimerDisabled = true
funkenstrahlen 08

2
Он изменился наUIApplication.shared.isIdleTimerDisabled = true
Лукас Фарах

1
где добавить эту строчку? У меня нет AppDelegate.swift, так как я использую
react

@PradnyanandMilindPohare, вы можете добавить его куда хотите, просто убедитесь, что эта строка выполняется
Mellao

20

Для Swift 3.0 есть два варианта в зависимости от того, где вы хотите вызвать код:

Внутри AppDelegate.swift:

application.idleTimerDisabled = true

За пределами AppDelegate.swift:

UIApplication.shared().isIdleTimerDisabled = true


2
Внешний код AppDelegate.swift должен быть таким:UIApplication.shared.isIdleTimerDisabled = false
DevStarlight

13

Swift 4

в файле AppDelegate.swift добавьте следующую строку внутри функции приложения :

    application.isIdleTimerDisabled = true

6

Вы можете использовать мою маленькую библиотеку Insomnia (Swift 3, iOS 9+) - еще одна приятная особенность заключается в том, что вы можете запретить спать только во время зарядки.

idleTimerDisabledSoultion в порядке , но вы должны помнить , чтобы установить его на falseпотом.


0

Если у вас более сложный случай, вы можете использовать наш небольшой проект: ScreenSleepManager или, если речь идет только о конкретных ViewControllers, используйте Insomnia, как указывалось ранее. Ручное управление idleTimerDisabledпочти всегда вызывало у меня некоторые проблемы (например, я забыл повторно установить значение false или обрабатывать несколько (вложенных) модулей, пытающихся установить его).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.