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 and above:
UIApplication.shared.isIdleTimerDisabled = true
Make sure to import UIKit
.
Here is the link to the documentation from developer.apple.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
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).