電源の状態が変更されたときに通知を受ける方法を説明します。
Sponsor Link
電源状態変更の通知
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
説明は以上です。
不明な点やおかしな点ありましたら、ご連絡いただけるとありがたいです。
Sponsor Link