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

UIKit

     
⌛️ < 1 min.

デバイスが、電源に接続されているかをチェックする方法を説明します。

UIDevice

デバイスの情報を取得する時に使うクラスです。

UIDevice.current で、singleton のオブジェクトを取得できますのでそこからデバイスの情報を取得します。

batteryState

UIDevice にいろいろなプロパティがあるのですが、バッテリの状態に関する情報は、batteryState変数に保持されています。

以下の値を取り得ます。

unknown
不明
unplugged
バッテリで動作中。電源に接続されていない。
charging
電源に接続されて、充電中(ただし、満充電にはなっていない)
full
満充電状態

full と charging

説明から読み取れない点があったので、以下の点を確認しました。

”full は、電源が接続されていると思って良いか?”

実機(iPad Pro 9.7inch)で確認しましたが、満充電(バッテリー100%と表示されている状態)になっていても電源が接続されていれば、”charging” が返ってきました。

逆にいうと、”full” を返してくるケースが見つかりませんでした。

ですので、電源に接続されているかどうかの判定には、基本的には、charging かどうかで判定すれば良さそうです。

MEMO

電源が接続されている時は、満充電であっても 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
}

説明は以上です。

コメントを残す

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