Как предотвратить блокировку экрана в моем приложении с быстрым включением IOS

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

Ответ 1

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

Objective-C:

[[UIApplication sharedApplication] setIdleTimerDisabled: YES];

Свифт (наследие):

UIApplication.sharedApplication().idleTimerDisabled = true

Свифт 3/4:

UIApplication.shared.isIdleTimerDisabled = true

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

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

Ответ 2

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

Внутри AppDelegate.swift:

application.idleTimerDisabled = true

Внешний AppDelegate.swift:

UIApplication.shared().isIdleTimerDisabled = true

Ответ 3

Swift 4

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

    application.isIdleTimerDisabled = true

Ответ 4

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

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

Ответ 5

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