Help us understand the problem. What is going on with this article?

[Swift3.0]iOS・tvOSアプリを実行中に画面ロック(スリープ)しないようにする方法

More than 3 years have passed since last update.

画面ロックしてほしくないこともある

iOS版の浮世絵時計アプリを開発しているときに見つけた小ネタです。

浮世絵時計アプリは、iPhoneやiPadを時計代わりにするので、自動的に画面ロック(スリープ)してほしくありません。そこで、自動画面ロックを解除する方法を探して、見つけたのが下記のコードです。

UIApplication.shared.isIdleTimerDisabled = true

isIdleTimerDisabledプロパティ(初期値はfalse)にtrueを代入することで、スリープ状態へ移行する時間を監視しているIdleTimerをオフにすることができます。

このコードを、画面ロックを解除したい箇所で実行します。
例えば、ある画面だけロックしないようにする場合は、その画面(ViewController)のviewDidLoadで実行します。

    override func viewDidLoad() {
        super.viewDidLoad()

        UIApplication.shared.isIdleTimerDisabled = true
    }

アプリケーションを起動したときに適用したい場合は、下記のようにAppDelegateに書いてしまってもいいかもしれません。

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        UIApplication.shared.isIdleTimerDisabled = true

        return true
    }

注意点

isIdleTimerDisabledのリファレンスを読むと、下記のような注意点が記載されています。

Important
You should set this property only if necessary and should be sure to reset it to false when the need no longer exists. Most apps should let the system turn off the screen when the idle timer elapses. This includes audio apps. With appropriate use of Audio Session Services, playback and recording proceed uninterrupted when the screen turns off. The only apps that should disable the idle timer are mapping apps, games, or programs where the app needs to continue displaying content when user interaction is minimal.

画面ロックを解除すると、画面がつきっぱなしになるので、バッテリーを消耗してしまいます。ユーザーのバッテリーを無駄にしないためにも、処理が終わったらすぐに画面ロックを元に戻すのをお忘れなく。

浮世絵時計アプリでは、viewDidDisappearで元に戻すようにしました。

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)

        UIApplication.shared.isIdleTimerDisabled = false
    }

追記

tvOS版の浮世絵時計アプリにも、isIdleTimerDisabledを組み込んで動作確認しました。

Apple TVは、操作なしで一定時間経過→スクリーンセーバー表示→スリープという段階を踏みますが、isIdleTimerDisabled = trueの場合は、スクリーンセーバーも表示されなくなりました。

浮世絵時計アプリのように、コンテンツを流しておくアプリを開発する場合は、ぜひお試しください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした