How to prevent screen lock on my application with swift on iOS

前端 未结 5 986
天命终不由人
天命终不由人 2020-12-02 06:53

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?

相关标签:
5条回答
  • 2020-12-02 07:01

    Swift 4

    in AppDelegate.swift file, add the following line inside application function:

        application.isIdleTimerDisabled = true
    
    0 讨论(0)
  • 2020-12-02 07:06

    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

    0 讨论(0)
  • 2020-12-02 07:12

    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 apple.developer.com.

    0 讨论(0)
  • 2020-12-02 07:15

    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.

    0 讨论(0)
  • 2020-12-02 07:23

    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).

    0 讨论(0)
提交回复
热议问题