Jak mogę zapobiec blokowaniu ekranu tylko podczas korzystania z Nawigacji?
Waze ma taką możliwość, jak mogę to zrobić w mojej aplikacji?
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.
UIApplication.sharedApplication().idleTimerDisabled = true
UIApplication.shared.idleTimerDisabled = true
UIApplication.shared.isIdleTimerDisabled = true
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
źródło
UIApplication.shared.isIdleTimerDisabled = false
Szybki 4
w pliku AppDelegate.swift dodaj następujący wiersz wewnątrz funkcji aplikacji :
źródło
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.
idleTimerDisabled
Soultion jest w porządku, ale trzeba pamiętać, aby ustawić go nafalse
później.źródło
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
idleTimerDisabled
prawie 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ć).źródło