So verhindern Sie die Bildschirmsperre in meiner Anwendung mit Swift unter iOS

113

Wie kann ich die Bildschirmsperre nur bei Verwendung der Navigation verhindern?

Waze hat die Möglichkeit, dies zu tun. Wie kann ich dies in meiner App tun?

Alvarogalia
quelle

Antworten:

241

Benutze das:

Ziel c:

[[UIApplication sharedApplication] setIdleTimerDisabled: YES];

Swift (Vermächtnis):

UIApplication.sharedApplication().idleTimerDisabled = true

Swift 3 und höher:

UIApplication.shared.isIdleTimerDisabled = true

Stellen Sie sicher, dass Sie importieren UIKit.

Hier ist der Link zur Dokumentation von apple.developer.com.

atwalsh
quelle
4
Swift sollte seinUIApplication.sharedApplication().idleTimerDisabled = true
Doug
3
Swift 3:UIApplication.shared.idleTimerDisabled = true
funkenstrahlen
2
Es änderte sich zuUIApplication.shared.isIdleTimerDisabled = true
Lucas Farah
1
Wo soll diese Zeile hinzugefügt werden? Ich habe AppDelegate.swift nicht, da ich React-Native verwende
Pradnyanand Milind Pohare
@PradnyanandMilindPohare Sie können es hinzufügen, wo immer Sie wollen, stellen Sie einfach sicher, dass diese Zeile ausgeführt wird
Mellao vor
20

Für Swift 3.0 gibt es zwei Optionen, je nachdem, wo Sie den Code aufrufen möchten:

In AppDelegate.swift:

application.idleTimerDisabled = true

Außerhalb von AppDelegate.swift:

UIApplication.shared().isIdleTimerDisabled = true

Crashalot
quelle
2
Außerhalb von AppDelegate.swift sollte der Code wie folgt lauten:UIApplication.shared.isIdleTimerDisabled = false
DevStarlight
13

Swift 4

Fügen Sie in der Datei AppDelegate.swift die folgende Zeile in die Anwendungsfunktion ein :

    application.isIdleTimerDisabled = true
kavehmb
quelle
6

Sie können meine kleine lib Insomnia (Swift 3, iOS 9+) verwenden - eine weitere nette Funktion ist, dass Sie verhindern können, dass Sie nur beim Aufladen schlafen.

Die idleTimerDisabledLösung ist in Ordnung, aber Sie müssen daran denken, sie falseanschließend einzustellen .

nsmeme
quelle
0

Wenn Sie einen fortgeschritteneren Fall haben, können Sie unser kleines Projekt verwenden: ScreenSleepManager oder wenn es sich nur um bestimmte ViewController handelt - verwenden Sie Insomnia, wie bereits erwähnt. Der manuelle Umgang mit idleTimerDisabledmir verursachte fast immer einige Probleme (z. B. vergessen, auf false zurückzusetzen oder mehrere (verschachtelte) Module zu behandeln, die versuchen, ihn einzustellen).

Teufel
quelle