Как отключить автоблокировку iPhone / iPad, когда приложение находится в режиме переднего плана? - PullRequest
29 голосов
/ 23 февраля 2012

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

Я знаю, что в какой-то момент я буду использовать [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; и [[UIApplication sharedApplication] setIdleTimerDisabled:NO];, но где их лучше всего разместить?

Ответы [ 5 ]

24 голосов
/ 23 февраля 2012

Включить таймер простоя в

- (void)applicationWillResignActive:(UIApplication *)application

и отключите его в

- (void)applicationDidBecomeActive:(UIApplication *)application
8 голосов
/ 03 августа 2015

Лучшее место для его отключения - didFinishLaunchingWithOptions. Система автоматически позаботится о том, чтобы настройка не действовала, когда приложение находится в фоновом режиме.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    application.idleTimerDisabled = YES; 
    return YES;
}

Я опубликовал эту альтернативу, потому что принятый ответ не предотвращает автоматическую блокировку при появлении предупреждения (электронная почта, сообщение, событие календаря и т. Д.) Или если центр уведомлений или центр управления работает.

3 голосов
/ 24 апреля 2017

Swift 3.0:

Внутри AppDelegate.swift: application.idleTimerDisabled = true

Вне AppDelegate.swift: UIApplication.shared().isIdleTimerDisabled = true

1 голос
/ 28 октября 2017

мои 2 цента: для xcode 9:

 application.idleTimerDisabled = true

..... AppDelegate.swift: 28: 15: «idleTimerDisabled» переименован в «isIdleTimerDisabled»

, поэтому:

application.isIdleTimerDisabled = true
1 голос
/ 10 августа 2016

А в Swift 3.0:

UIApplication.shared().isIdleTimerDisabled = true
...