Jak zapobiec blokowaniu ekranu w mojej aplikacji za pomocą Swift na iOS

113

Jak mogę zapobiec blokowaniu ekranu tylko podczas korzystania z Nawigacji?

Waze ma taką możliwość, jak mogę to zrobić w mojej aplikacji?

alvarogalia
źródło

Odpowiedzi:

241

Użyj tego:

Cel C:

[[UIApplication sharedApplication] setIdleTimerDisabled: YES];

Swift (starsze):

UIApplication.sharedApplication().idleTimerDisabled = true

Swift 3 i nowsze:

UIApplication.shared.isIdleTimerDisabled = true

Pamiętaj, aby zaimportować UIKit.

Oto link do dokumentacji z apple.developer.com.

atwalsh
źródło
4
Szybki powinien byćUIApplication.sharedApplication().idleTimerDisabled = true
Doug
3
Swift 3:UIApplication.shared.idleTimerDisabled = true
funkenstrahlen
2
Zmieniło się naUIApplication.shared.isIdleTimerDisabled = true
Lucas Farah
1
gdzie dodać tę linię? Nie mam AppDelegate.swift, ponieważ używam native
speakera
@PradnyanandMilindPohare możesz go dodać w dowolnym miejscu, po prostu upewnij się, że ta linia jest wykonana
Mellao
20

W przypadku Swift 3.0 dostępne są dwie opcje w zależności od tego, gdzie chcesz wywołać kod:

Wewnątrz AppDelegate.swift:

application.idleTimerDisabled = true

Poza AppDelegate.swift:

UIApplication.shared().isIdleTimerDisabled = true

Crashalot
źródło
2
Zewnętrzny kod AppDelegate.swift powinien wyglądać następująco:UIApplication.shared.isIdleTimerDisabled = false
DevStarlight
13

Szybki 4

w pliku AppDelegate.swift dodaj następujący wiersz wewnątrz funkcji aplikacji :

    application.isIdleTimerDisabled = true
kavehmb
źródło
6

Możesz użyć mojego małego lib Insomnia (Swift 3, iOS 9+) - kolejną fajną funkcją jest to, że możesz zapobiec spaniu tylko podczas ładowania.

idleTimerDisabledSoultion jest w porządku, ale trzeba pamiętać, aby ustawić go na falsepóźniej.

nsmeme
źródło
0

Jeśli masz bardziej zaawansowany przypadek, możesz skorzystać z naszego małego projektu: ScreenSleepManager lub jeśli chodzi o konkretne ViewControllers - użyj Insomnia, jak wskazano wcześniej. Ręczne radzenie sobie z idleTimerDisabledprawie zawsze powodowało pewne problemy (na przykład zapomniałem zresetować na false lub obsłużyć wiele (zagnieżdżonych) modułów, próbując to ustawić).

Diabeł
źródło