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?
Use this:
Objective-C:
[[UIApplication sharedApplication] setIdleTimerDisabled: YES];
Swift (legacy):
UIApplication.sharedApplication().idleTimerDisabled = true
Swift 3/4:
UIApplication.shared.isIdleTimerDisabled = true
Make sure to import UIKit
.
Here is the link to the documentation from apple.developer.com.
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
Swift 4
in AppDelegate.swift file, add the following line inside application function:
application.isIdleTimerDisabled = true
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.
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).
来源:https://stackoverflow.com/questions/28329185/how-to-prevent-screen-lock-on-my-application-with-swift-on-ios