2012-02-23 7 views
28

Estoy desarrollando una aplicación de reproductor de música/video y solo necesito saber cómo desactivar el bloqueo automático mientras mi aplicación está en primer plano.Cómo deshabilitar el bloqueo automático de iPhone/iPad mientras la aplicación está en modo de primer plano?

Sé que tengo que usar [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; y [[UIApplication sharedApplication] setIdleTimerDisabled:NO]; en algún momento, pero ¿cuál es el mejor lugar para ponerlos?

Respuesta

24

activar el temporizador de inactividad en

- (void)applicationWillResignActive:(UIApplication *)application 

y desactivarlo en

- (void)applicationDidBecomeActive:(UIApplication *)application 
+0

Funcionó bien aquí, pero me pregunto ¿Funcionará en dockstations y apple tv? No tengo ninguno aquí para probar. – jMelnik

+0

He oído que otra opción es reproducir un "sonido" silencioso. –

+1

@HotLicks que probablemente resultaría en que tu aplicación sea rechazada, pero nadie podría decir eso con certeza. –

8

El mejor lugar para desactivarlo está en didFinishLaunchingWithOptions. El sistema se encargará automáticamente de que la configuración no tenga ningún efecto cuando la aplicación está en segundo plano.

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

he publicado esta alternativa debido a que la respuesta aceptada no impide el bloqueo automático cuando aparece una alerta (correo electrónico, mensajes, calendario de eventos, etc.), o el centro de notificación o centro de control está arriba.

+0

¿Qué sucede si una aplicación está en segundo plano? si el bloqueo automático está desactivado en esta situación? –

+0

auto-lock no está desactivado en el fondo, Apple no lo permite. – malhal

1

Y en Swift 3.0:

UIApplication.shared().isIdleTimerDisabled = true 
2

Swift 3.0:

Dentro AppDelegate.swift: application.idleTimerDisabled = true

Fuera AppDelegate.swift: UIApplication.shared().isIdleTimerDisabled = true

0

mis 2 centavos para Xcode: 9:

application.idleTimerDisabled = true 

..... AppDelegate.swift: 28: 15: 'idleTimerDisabled' se ha cambiado el nombre a 'isIdleTimerDisabled'

manera:

application.isIdleTimerDisabled = true 
Cuestiones relacionadas