How to prevent screen lock on my application with swift on iOS
IosSwiftLockingScreenIos Problem Overview
How can I prevent screen lock only when using Navigation?
Waze has the option to do that, how can I do this in my App?
Ios Solutions
Solution 1 - Ios
Use this:
Objective-C:
[[UIApplication sharedApplication] setIdleTimerDisabled: YES];
Swift (legacy):
UIApplication.sharedApplication().idleTimerDisabled = true
Swift 3 and above:
UIApplication.shared.isIdleTimerDisabled = true
Make sure to import UIKit
.
Here is the link to the documentation from developer.apple.com.
Solution 2 - Ios
For Swift 3.0 here are two options depending on where you want to invoke the code:
Inside AppDelegate.swift:
application.idleTimerDisabled = true
Outside AppDelegate.swift:
UIApplication.shared().isIdleTimerDisabled = true
Solution 3 - Ios
Swift 4
in AppDelegate.swift file, add the following line inside application function:
application.isIdleTimerDisabled = true
Solution 4 - Ios
You can use my little lib Insomnia (Swift 3, iOS 9+) - another nice feature is that you can prevent from sleeping only when charging.
The idleTimerDisabled
soultion is okay but you have to remember to set it to false
afterwards.
Solution 5 - Ios
If you have more advanced case you can use our small project: ScreenSleepManager or if it's just about particular ViewControllers - use Insomnia as pointed earlier. Manual dealing with idleTimerDisabled
almost always caused me some issues (like forgot to re-set to false or handle multiple (nested) modules trying to set it).