Sponsor Link
UIDevice
デバイスの情報を取得する時に使うクラスです。
UIDevice.current で、singleton のオブジェクトを取得できますのでそこからデバイスの情報を取得します。
batteryState
UIDevice にいろいろなプロパティがあるのですが、バッテリの状態に関する情報は、batteryState変数に保持されています。
以下の値を取り得ます。
- unknown
- 不明
- unplugged
- バッテリで動作中。電源に接続されていない。
- charging
- 電源に接続されて、充電中(ただし、満充電にはなっていない)
- full
- 満充電状態
full と charging
説明から読み取れない点があったので、以下の点を確認しました。
”full は、電源が接続されていると思って良いか?”
実機(iPad Pro 9.7inch)で確認しましたが、満充電(バッテリー100%と表示されている状態)になっていても電源が接続されていれば、”charging” が返ってきました。
逆にいうと、”full” を返してくるケースが見つかりませんでした。
ですので、電源に接続されているかどうかの判定には、基本的には、charging かどうかで判定すれば良さそうです。
電源が接続されている時は、満充電であっても charging が返されます。
自分のアプリケーションでは、charging のみを判定に使っていますが、full をどう扱うかは、アプリケーションの目的依存になります。
ただし、上記の BatteryStatus 変数で実機の状態がチェックできるためには、事前に必要となる設定があります。
isBatteryMonitoringEnabled
同じく、UIDevice のプロパティで、”battery monitoring” をするかどうかを設定するフラグです。
このフラグが false になっていると battery status を取得することはできません。
アプリケーションの初期化時のタイミングで上記プロパティを、設定しておくことが必要です。
UIDevice.current.isBatteryMonitoringEnabled = true // Battery Status をモニタできるようにする
まとめ:電源状態をチェックするコード
例えば、電源が接続されていない時のみ、何かをするためのコードは、以下のようになります。
UIDevice.current.isBatteryMonitoringEnabled = true // 初期化コードのどこか
...
// 判定したい箇所で
if UIDevice.current.batteryState == .unplugged {
// process something
}
説明は以上です。
Sponsor Link