2012-03-28 4 views
38

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

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

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

Спасибо.

Edit:

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

+2

это звучит как ошибка. Если вы хотите сообщить об ошибках -> http://bugreport.apple.com/ –

+0

Куда вы вызываете этот код? Вы уверены, что он выполняется (вы установили точку останова и проверили)? Пример Apple заключается в том, чтобы поместить 'application.idleTimerDisabled = YES;' в 'applicationDidFinishLaunching' делегата –

+0

Да @NickBull я установил код внутри applicationDidFinishLaunching. Но, как вы можете видеть, тот же код отлично работает, когда он установлен в устройстве 5.0.1. – Selvin

ответ

24

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

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

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

[UIApplication sharedApplication].idleTimerDisabled = YES; 

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

+1

Мне не нужен idleTimerDisabled = ДА во всем приложении. Вы можете просто настроить [[UIApplication sharedApplication] setIdleTimerDisabled: YES]; где вам нужен код, и отключить свойство, если это не требуется с [[UIApplication sharedApplication] setIdleTimerDisabled: NO]; –

3

Важно: Вы должны установить это свойство только в случае необходимости и должны быть уверены, чтобы сбросить его не от того, когда потребность больше не существует. Большинство приложений должны позволить системе выключить экран, когда истечет таймер простоя . Сюда относятся звуковые приложения. При надлежащем использовании Служб аудиозаписей, воспроизведение и запись продолжаются без прерывания, когда экран выключается. Единственными приложениями, которые должны отключить таймер простоя, являются сопоставление приложений, игр или подобных программ со спорадическим взаимодействием пользователей.

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

+0

Мое приложение, безусловно, одно со спорадическим взаимодействием с пользователем;), но см. Код работает в 5.0.1 без каких-либо проблем. Это странно. – Selvin

0

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

24
[[UIApplication sharedApplication] setIdleTimerDisabled: YES]; 

работал на меня прошивкой 5.1

1

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

application.idleTimerDisabled = true

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

+0

Swift 3: 'application.isIdleTimerDisabled = true' – Crashalot

0

Для Swift, я использую это сделать за пределами делегата:

UIApplication.sharedApplication().idleTimerDisabled = true 
Смежные вопросы