alvarogalia
alvarogalia

Reputation: 1701

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

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?

Upvotes: 147

Views: 69789

Answers (6)

leo
leo

Reputation: 113

SwiftUI code:

import SwiftUI
import UIKit

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Prevent Screen Sleep")
        }
        .onAppear {
            // Disable the idle timer when the view appears
            UIApplication.shared.isIdleTimerDisabled = true
        }
        .onDisappear {
            // Re-enable the idle timer when the view disappears
            UIApplication.shared.isIdleTimerDisabled = false
        }
    }
}

Upvotes: 8

atwalsh
atwalsh

Reputation: 3722

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.

Upvotes: 291

kavehmb
kavehmb

Reputation: 9913

Swift 4

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

application.isIdleTimerDisabled = true
        

Upvotes: 17

Dev_IL
Dev_IL

Reputation: 292

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

Upvotes: 0

Crashalot
Crashalot

Reputation: 34523

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

Upvotes: 25

nsmeme
nsmeme

Reputation: 221

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.

Upvotes: 6

Related Questions