私のアプリ (ミュージシャン向けのメトロノーム アプリ) には、バッテリー寿命を節約するために画面を暗くする機能があります。明るさを設定するには、次を使用しています。
[UIScreen mainScreen].brightness = 0.1;
アプリの起動時に元の明るさを viewDidLoad(...) に保存し、それをユーザーのデフォルトに保存しています。
アプリ内でビューを変更するときは、ユーザー デフォルトから元の明るさを取得し、次の呼び出しで復元します。
[UIScreen mainScreen].brightness = originalBrightness;
これはうまくいきます。元の値などを示す NSLog(...) メッセージがあるので、メカニズムは機能します。
私が抱えている問題は、ホームボタンが押されたときにアプリケーションの終了時に元の明るさを復元する方法です。
以下のアプリケーション デリゲート メソッドに同様のコードを追加しました。
applicationWillResignActive(...)
applicationDidEnterBackground(...)
applicationWillTerminate(...)
それらはそれぞれ、取得された元の明るさを示す同様の NSLog(...) を使用して、ビューで以前と同じように画面の明るさを設定するメソッド呼び出しを持っています...そしてそれはすべて正しいです。私もデバッグし、明るさを設定するための呼び出しが行われています...しかし、アプリは終了し、デバイスの画面はまだ下の暗いレベルにあります。
最後に、上部の「ロック」ボタンをクリックしてから、ホームボタンを押して起動すると...明るさは正しいです。
私の疑いは、アプリの終了時に明るさを設定するための呼び出しでトリガーされたアクションまたはイベントが、おそらく無効な状態などのために通過していないことです。
また、私のアプリはバックグラウンドで実行されないように設定されており、次のように info.plist に設定されています。
Application does not run in background YES
どんな助けでも大歓迎です。
ありがとう!