web-dev-qa-db-de.com

Deaktivieren Sie die automatische Bildschirmsperre in iOS 5.1

Die folgende Codezeile verhindert, dass die App den Bildschirm nach einiger Leerlaufzeit automatisch sperrt.

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

Es funktioniert gut bis iOS 5.0 . Aber iOS 5.1 respektiert diese Zeile nicht und sperrt den Bildschirm nach einiger Leerlaufzeit . Wie kann man dieses irritierende Problem lösen?

Vielen Dank.

Bearbeiten:

Der gleiche Code funktioniert gut, wenn er in 5.0.1-Gerät installiert ist. Aber ich weiß nicht, warum es nicht mit 5.1-Geräten funktioniert.

38
Selvin

Einfach [UIApplication sharedApplication].idleTimerDisabled = YES; einstellen 

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

funktioniert gut für mich. Es gibt jedoch einen Vorbehalt. Mir ist aufgefallen, dass bei jedem Aufruf des Kameradienstprogramms zum Erstellen eines Schnappschusses idleTimerDisable hinter der Szene auf NO gesetzt wird. Gleich nachdem ich mein Bild hochgeladen hatte, musste ich die folgende Codezeile erneut aufrufen: 

[UIApplication sharedApplication].idleTimerDisabled = YES;

Es würde mich nicht wundern, wenn es mehr Orte gibt, die dieselbe Strategie erfordern. Bisher hat dieser Ansatz für mich ohne Probleme funktioniert.

24
Aki
[[UIApplication sharedApplication] setIdleTimerDisabled: YES];

arbeitete für mich an iOS 5.1

25
orkoden

Nein, da sollte kein Unterschied sein. Vielleicht hast du einen anderen Fehler ..
Siehe iOS 5.0 bis 5.1 API Diffs

5
calimarkus

Wichtig: Sie sollten diese Eigenschaft nur festlegen, wenn dies erforderlich ist. Stellen Sie sicher, dass Sie sie auf NO zurücksetzen, wenn der Bedarf nicht mehr besteht. Die meisten Anwendungen sollten das System den Bildschirm ausschalten lassen, wenn der Ruhezustand nicht vorhanden ist Timer läuft ab. Dies beinhaltet Audioanwendungen. Bei entsprechender Verwendung von Audio Session Services, Wiedergabe und Aufnahme gehen weiter ununterbrochen, wenn der Bildschirm ausgeschaltet wird. Die einzigen Anwendungen, die Deaktivieren Sie den Leerlauf-Timer sind Mapping-Anwendungen, Spiele oder ähnliche Programme mit sporadischer Benutzerinteraktion.

Vielleicht überschreiten Sie die zulässige Zeit, wach zu sein?

3
jacekmigacz

ich weiß, dass es alt ist, aber ich fand das gut und in Swift kann man es so aussehen

application.idleTimerDisabled = true

Danke für Ihre Antworten! Ich benutze gerade xcode 7 Beta 3 (Swift 2)

1

Funktioniert gut, wenn Ihre Anwendung für eine Hintergrundaufgabe registriert ist, beispielsweise für die GPS-Standortaktualisierung.

0
tomislav

Für Swift benutze ich dies außerhalb des Delegierten: 

    UIApplication.sharedApplication().idleTimerDisabled = true
0