Verzögerung, aber nicht deaktivieren iPhone Auto-Lock
-
06-07-2019 - |
Frage
Ich habe derzeit eine sehr einfache App, für die die einzige Interaktion das iPhone schüttelt. Letztendlich dimem und automatische Locks, da das iPhone keine Touch-Events erhält. Ich habe mich gefragt, ob es eine Möglichkeit gibt, das Auto-Lock-Time-Out beim Schütteln zurückzusetzen.
Ich weiß, dass ich das tun würde, um Auto-Lock vollständig zu deaktivieren:
[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]
Aber ich möchte es nicht wirklich vollständig deaktivieren. Wenn das iPhone zu Recht nicht verwendet wird, sollte es wie erwartet automatisch lockern.
Danke für Ihre Hilfe.
Lösung
Sie könnten den Wert von umschalten [UIApplication sharedApplication].idleTimerDisabled
Basierend auf dem Wert Ihres eigenen NSTIMER- oder Verhaltensgeste (schütteln Sie das Telefon). Es kann auf eingestellt werden YES
/NO
Mehrfach in Ihrer Anwendung.
Andere Tipps
Hier ist der Code, den ich in meiner App verwende. Ein bisschen Hintergrund: Meine App verfügt über einen integrierten Webserver, damit Benutzer über WLAN von einem Browser von einem Browser auf Daten zugreifen können. Jedes Mal, wenn eine Anforderung auf dem Server eintrifft, erweitere ich den Sperrtimer (in diesem Fall mindestens 2 Minuten. Sie erhalten weiterhin die Standardzeit hinzugefügt.
// 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];
}