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?

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.


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


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

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 .


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).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.