Mam aplikację, która musi czuwać do końca odliczania, ale przejdzie w „tryb uśpienia”, gdy osiągnie wyznaczony czas na sen.
W mojej aplikacji mam opcję odroczenia uśpienia, aby użytkownicy mogli ją wyłączyć / włączyć.
Jak to zrobić programowo?
Mam aplikację, która musi czuwać do końca odliczania, ale przejdzie w „tryb uśpienia”, gdy osiągnie wyznaczony czas na sen.
W mojej aplikacji mam opcję odroczenia uśpienia, aby użytkownicy mogli ją wyłączyć / włączyć.
Jak to zrobić programowo?
Odpowiedzi:
Licznik czasu bezczynności można wyłączyć w następujący sposób;
W celu C:
[UIApplication sharedApplication].idleTimerDisabled = YES;
W Swift:
UIApplication.sharedApplication().idleTimerDisabled = true
W wersjach Swift 3.0 i Swift 4.0:
UIApplication.shared.isIdleTimerDisabled = true
Ustaw go z powrotem NO
lub, false
aby ponownie włączyć tryb uśpienia.
Na przykład, jeśli potrzebujesz go, dopóki nie opuścisz widoku, możesz go przywrócić, nadpisując viewWillDisappear:
override func viewWillDisappear(_ animated: Bool) {
UIApplication.shared.isIdleTimerDisabled = false
}
Więcej o klasie UIApplication .
[UIApplication sharedApplication]
odnosi się tylko do obiektu UIApplication Twojej aplikacji.
W Swift 3, aby wyłączyć licznik czasu bezczynności, teraz:
UIApplication.shared.isIdleTimerDisabled = true
Aby z powrotem włączyć licznik czasu bezczynności, wystarczy:
UIApplication.shared.isIdleTimerDisabled = false
Dodatkowo zwróć uwagę, że YES
i NO
nie są dostępne w Swift i że musisz użyć albo true
lub false
(w przeciwieństwie do poprzedniej odpowiedzi).
iOS 13, Swift 5,5.1+, aby wyłączyć licznik czasu bezczynności. W SceneDelegate.swift
.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
UIApplication.shared.isIdleTimerDisabled = true
}
w Swift 3 dokładna lokalizacja, w której można to zrobić AppDelegate.swift
- należy dodać UIApplication.shared.isIdleTimerDisabled = true
wewnątrz application
func, aby wynik wyglądał tak:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.isIdleTimerDisabled = true
return true
}