Отключить автоматическую блокировку экрана в iOS 5.1 - PullRequest
38 голосов
/ 28 марта 2012

Следующая строка кода запрещает приложению автоматически блокировать экран после некоторого простоя.

[UIApplication sharedApplication].idleTimerDisabled = YES; //write this in applicationDidFinishLaunching

Хорошо работает до iOS 5.0. Но iOS 5.1 не уважает эту строку и блокирует экран после некоторого простоя. Как решить эту раздражающую проблему?

Спасибо.

Edit:

Тот же код работает нормально, если он установлен на устройстве 5.0.1. Но я не знаю, почему он не работает с устройством 5.1.

Ответы [ 7 ]

25 голосов
/ 04 июля 2012
[[UIApplication sharedApplication] setIdleTimerDisabled: YES];

у меня работало на iOS 5.1

24 голосов
/ 27 июля 2012

Просто установка [UIApplication sharedApplication].idleTimerDisabled = YES; в

- (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

хорошо работает для меня. Однако есть одна оговорка. Я заметил, что каждый раз, когда я запускаю утилиту камеры для создания снимка, idleTimerDisable устанавливается на NO позади сцены. Поэтому сразу после загрузки моего изображения мне пришлось снова вызвать следующую строку кода:

[UIApplication sharedApplication].idleTimerDisabled = YES;

Я не удивлюсь, если появятся еще места, где требуется такая же стратегия. До сих пор этот подход работал без проблем для меня.

5 голосов
/ 28 марта 2012

Нет там должно быть без разницы.Возможно, у вас есть другая ошибка ..
См. Различия API от iOS 5.0 до 5.1

3 голосов
/ 28 марта 2012

Важное замечание: Вы должны установить это свойство только в случае необходимости, и обязательно сбросьте его на NO, когда необходимость больше не существует. Наиболее приложения должны позволить системе выключать экран при простое Таймер истекает. Это включает в себя аудио приложения. При правильном использовании Audio Session Services, воспроизведение и запись продолжаются непрерывно, когда экран выключается. Единственные приложения, которые следует отключить таймер простоя, отображение приложений, игр или подобные программы со спорадическим взаимодействием с пользователем.

Может быть, Вы превысили допустимый срок бодрствования?

1 голос
/ 11 июля 2015

я знаю, что он старый, но я нашел это хорошо, и в Свифте вы можете сделать это так:

application.idleTimerDisabled = true

Спасибо за ваши ответы!я сейчас использую xcode 7 Beta 3 (Swift 2)

0 голосов
/ 19 августа 2016

Для Свифта я использую это, чтобы делать вне делегата:

    UIApplication.sharedApplication().idleTimerDisabled = true
0 голосов
/ 14 апреля 2012

Работает нормально, если ваше приложение зарегистрировано для какой-либо фоновой задачи, например, для обновления местоположения GPS.

...