Отключить автоматическую блокировку экрана в iOS 5.1
Следующая строка кода запрещает приложению автоматически блокировать экран после некоторого простоя.
[UIApplication sharedApplication].idleTimerDisabled = YES; //write this in applicationDidFinishLaunching
Он хорошо работает до iOS 5.0.
Но iOS 5.1 не соблюдает эту строку и блокирует экран после некоторого простоя.
Как решить эту раздражающую проблему?
Спасибо.
Edit:
Тот же код отлично работает, когда он установлен в устройстве 5.0.1. Но я не знаю, почему он не работает с устройством 5.1.
Ответы
Ответ 1
Просто установите [UIApplication sharedApplication].idleTimerDisabled = YES;
в
- (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
хорошо работает для меня. Однако есть оговорка. Я заметил, что каждый раз, когда я вызываю утилиту камеры для получения моментального снимка, idleTimerDisable устанавливается за НЕТ за сценой. Поэтому сразу после загрузки изображения мне пришлось снова вызвать следующую строку кода:
[UIApplication sharedApplication].idleTimerDisabled = YES;
Я не удивлюсь, если в нем будет больше мест, требующих такой же стратегии. Пока этот подход работал без проблем для меня.
Ответ 2
[[UIApplication sharedApplication] setIdleTimerDisabled: YES];
работал у меня на iOS 5.1
Ответ 3
Нет никакой разницы. Возможно, у вас есть еще одна ошибка.
См. iOS 5.0 to 5.1 API Diffs
Ответ 4
Важно:. Вы должны установить это свойство только при необходимости и должны быть уверены, что reset это НЕТ, когда потребность больше не будет существовать. Наиболее приложения должны позволять системе отключать экран при работе в режиме ожидания таймер истекает. Сюда относятся звуковые приложения. При надлежащем использовании Служб аудио сессии, воспроизведение и запись продолжаются если экран выключен. Единственные приложения, которые отключить таймер простоя - это сопоставление приложений, игр или аналогичные программы со спорадическим взаимодействием с пользователем.
Возможно, вы превысили допустимый предел времени бодрствования?
Ответ 5
Я знаю, что он старый, но я нашел это хорошо, и в Swift вы можете сделать это, как будто это
application.idleTimerDisabled = true
Спасибо за ответы! я использую прямо сейчас xcode 7 Beta 3 (Swift 2)
Ответ 6
Прекрасно работает, если ваше приложение зарегистрировано для какой-либо фоновой задачи, например, при обновлении местоположения GPS.
Ответ 7
Для Swift я использую это для выполнения вне делегата:
UIApplication.sharedApplication().idleTimerDisabled = true