[UIKit] 電源状態の通知を受ける方法

UIKit

     

TAGS:

⌛️ < 1 min.
電源の状態が変更されたときに通知を受ける方法を説明します。

UIKit [iOS] 電源/バッテリー状態 と 画面ロック

電源状態変更の通知

NotificationCenter に登録して、特定の通知を受け取ることで、変化を検知することができます。

batteryStateDidChangeNotification

電源の状態が変更されたときに通知を受け取ることができます。

通知は、UIDevice.batteryStateDidChangeNotification と定義されています。

Apple のドキュメントは、こちら

以下のように、NotificationCenter に登録して、通知を受け取ります。

example code


NotificationCenter.default.addObserver(self, selector: #selector(XXXX.batteryStateChanged(notification:)),
                                       name: UIDevice.batteryStateDidChangeNotification, object: nil)

@objc func batteryStateChanged(notification: Notification) {
  // handle notification
}

batteryLevelDidChangeNotification

バッテリレベルの変化で通知が欲しいときにも受け取ることができます。

batteryStateDidChangeNotification と同様に、NotificationCenter に登録して、通知を受け取ります。

Apple のドキュメントは、こちら

なお、Apple のドキュメントには、「1分間に1回以上は、送られないので、バッテリの消費率や残り時間の計算には使ってはいけません。」と注意書きがあります。

removeObserver

基本的には、NotificationCenter への AddObserver と removeObserver は、対で使うものですが、iOS 9.0 以降、macOS 10.11 以降がターゲットであれば、removeObjserver は、しなくてもシステム側で処理してくれるそうです。

Apple のドキュメントは、こちら

まとめ

UIDevice にまとまっている電源関連情報
バッテリの状態
UIDevice.current.batteryState
バッテリ状態の通知
UIDevice.batteryStateDidChangeNotification
バッテリ残レベルの通知
UIDevice.batteryLevelDidChangeNotification
バッテリ状態監視許可
UIDevice.current.isBatteryMonitoringEnabled
おまけ:スクリーンロック制御
UIApplication.shared.isIdleTimerDisabled

説明は以上です。
不明な点やおかしな点ありましたら、ご連絡いただけるとありがたいです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です