2012-09-30 35 views
129

私はカウントダウンが終了するまで目を覚ましておく必要がありますが、スリープ状態になるまでにスリープモードに入ります。iOSでスリープモードをプログラムで有効/無効にするにはどうすればよいですか?

私のアプリでは、睡眠を延期するオプションがあるので、ユーザーはそれを無効/有効にすることができます。

どのようにプログラムで行うのですか?

答えて

314

アイドルタイマーは、次のように無効にすることができます。 Objective-Cで

:スウィフトで

[UIApplication sharedApplication].idleTimerDisabled = YES; 

:スウィフト3.0 &スウィフト4.0では

UIApplication.sharedApplication().idleTimerDisabled = true 

:バックNOまたはfalse

UIApplication.shared.isIdleTimerDisabled = true 

設定、それを再しますスリープモードを有効にします。

たとえば、ビューを去るまで、あなたがそれを必要とする場合は、viewWillDisappearをオーバーライドすることで、それをバックに設定することができますUIApplication Classについて

override func viewWillDisappear(_ animated: Bool) { 
    UIApplication.shared.isIdleTimerDisabled = false 
} 

より。 、

UIApplication.shared.isIdleTimerDisabled = false 

さらにYESNOであることに注意してください。単純です

UIApplication.shared.isIdleTimerDisabled = true 

が戻ってその上にアイドルタイマーを有効にするには:

スウィフト3では
+1

リンゴの時計のためにこの仕事をしていますか? – Gati

+0

@Gati私はそれを疑うが、私は腕時計を持っていないので私は確認することができない – jrturton

+1

@jrturtonうーん..それはリンゴの時計で動作していません。あなたはこれについて何か解決策があれば教えてください。 – Gati

14

は、それが今でアイドルタイマーを無効にしますSwiftでは利用できず、trueまたはfalseのいずれかを使用する必要があります(前の回答とは対照的)。スウィフトで

-3

はこれを行うことができる3正確な位置はAppDelegate.swiftある - 結果は次のようになりますので、あなたはapplication FUNC内UIApplication.shared.isIdleTimerDisabled = trueを追加する必要があります

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    UIApplication.shared.isIdleTimerDisabled = true 
    return true 
} 
+0

これはAppDelegateに依存しません。実際には、私は本当の理由なくデバイスを目覚めさせておくことを悪い習慣と考えています。問題は、特定の機能(カウントダウンが終了するまで)中にデバイスを起床させておくことでした。カウントダウン終了後にアイドルタイマーをディセーブルにして、カウントダウンが終了した後に再度有効にする必要があります。 – Cyrus

+0

@Cyrus私は迅速なプログラマーではない。現在私はwebviewアプリを作っています。私は正確な指示なしにたくさんのソリューションを試しましたが、それは私にとってはうまくいきませんでしたが、これはうまくいきます。私はこれを投稿して、同様の解決策を探している他の人たちと共有します。これを使用する理由 - 私のアプリは、常に再生中に目を覚ます必要があるギターヘルパーです – godblessstrawberry

関連する問題