plus - Retrasando pero no deshabilitando el bloqueo automático del iPhone
desactivar bloqueo automatico iphone 8 (2)
Puede alternar el valor de [UIApplication sharedApplication].idleTimerDisabled
función del valor de su propio NSTimer o gesto de comportamiento (sacudir el teléfono). Se puede establecer en YES
/ NO
varias veces en su aplicación.
Actualmente tengo una aplicación muy simple para la cual la única interacción es sacudir el iPhone. Sin embargo, al final, la pantalla se atenúa y se bloquea automáticamente, ya que el iPhone no está recibiendo ningún evento táctil. Me preguntaba si hay una forma de restablecer el tiempo de espera de autobloqueo cuando se agita.
Sé que para desactivar el bloqueo automático por completo, yo haría esto:
[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]
pero realmente no quiero deshabilitarlo por completo; si el iPhone legítimamente no se está utilizando, se debe bloquear automáticamente como se esperaba.
Gracias por tu ayuda.
Aquí está el código que uso en mi aplicación. Un poco de historia: mi aplicación tiene un servidor web incorporado para que los usuarios puedan acceder a los datos de un navegador a través de WIFI y cada vez que llega una solicitud al servidor, extiendo el temporizador de bloqueo (por un mínimo de 2 minutos en este caso; todavía obtienes la cantidad de tiempo predeterminada agregada una vez que vuelves a habilitarla).
// disable idle timer for a fixed amount of time.
- (void) extendIdleTimerTimeout
{
// cancel previous scheduled messages to turn idle timer back on
[NSObject cancelPreviousPerformRequestsWithTarget:self
selector:@selector(reenableIdleTimer)
object:nil];
// disable idle timer
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
// re-enable the timer on after specified delay.
[self performSelector:@selector(reenableIdleTimer) withObject:nil afterDelay: 60 * 2];
}
- (void) reenableIdleTimer
{
sharedApplication].idleTimerDisabled );
[NSObject cancelPreviousPerformRequestsWithTarget:self
selector:@selector(reenableIdleTimer)
object:nil];
// disable idle timer
[[UIApplication sharedApplication] setIdleTimerDisabled:NO];
}