【Swift】iOSでバッテリー残量と状態(充電中・放電中・満充電など)を取得する方法
本記事では、iOSアプリでデバイスのバッテリー状態(充電中・放電中・満充電など)やバッテリー残量を取得する方法を、Swiftのコード例とともにわかりやすく解説します。
全体の流れ
バッテリー情報を取得するには、主に以下の手順を行います。
- バッテリー監視機能を有効化する
- 現在のバッテリー状態を取得するプロパティを用意する
- バッテリー状態の変化を受け取る通知オブザーバーを登録する
- UI(ラベル)に状態を反映する
それでは、順番に見ていきましょう。
ステップ1:プロジェクトを作成する
Xcodeを開き、「New Project → Single View Application」を選択して、新しいプロジェクトを作成します。ここではプロジェクト名を「BatteryState」とします。
ステップ2:StoryboardにUIを配置する
Main.storyboardを開き、以下のように2つのラベルを配置します。これらのラベルにバッテリーの状態を表示していきます。

ステップ3:バッテリー監視を有効にする
iOSはデフォルトではバッテリー情報を追跡しないため、まず監視機能を有効にする必要があります。次のコードをViewControllerのviewDidLoadに記述します。
UIDevice.current.isBatteryMonitoringEnabled = true
ステップ4:バッテリー状態を保持する変数を宣言する
現在のバッテリー状態を返す変数を用意します。ここではbatteryStateという名前にします。UIDevice.current.batteryStateを参照することで、最新の状態を常に取得できます。
var batteryState: UIDevice.BatteryState {
return UIDevice.current.batteryState
}なお、UIDevice.BatteryStateには以下の4つのケースがあります。
- .charging … 充電中
- .unplugged … 電源未接続(放電中)
- .full … 満充電
- .unknown … 状態不明(シミュレーターや監視無効時など)
ステップ5:通知オブザーバーを登録する
バッテリーの状態が変化するたびにiOSから通知が送られるため、その通知を受け取るオブザーバーを登録します。以下のコードをviewDidLoadに追加しましょう。
NotificationCenter.default.addObserver(self, selector: #selector(batteryLevelDidChange), name: UIDevice.batteryLevelDidChangeNotification, object: nil)
オブザーバーを登録しておくことで、バッテリーレベルが変化するたびにbatteryLevelDidChangeメソッドが呼び出されるようになります。
ステップ6:バッテリー状態の変化を処理する
次に、通知を受け取った際にラベルを更新する処理を実装します。メソッドは以下のように定義します。
@objc func batteryLevelDidChange() {
updateBatteryStateLabel()
}
func updateBatteryStateLabel() {
var status = "Unknown"
switch batteryState {
case .charging:
status = "Charging"
case .unknown:
status = "Unknown"
case .unplugged:
status = "Unplugged"
case .full:
status = "Full"
}
DispatchQueue.main.async {
self.batteryStateLabel.text = "Battery State: \(status)"
}
}ここでは、ラベルの表示内容を更新するupdateBatteryStateLabel関数を定義し、オブザーバー経由で呼び出されるbatteryLevelDidChangeから呼んでいます。UIの更新は必ずメインスレッドで行う必要があるため、DispatchQueue.main.asyncを使用している点にも注目してください。
完成したviewDidLoad
アプリ起動時に初期状態も表示できるよう、updateBatteryStateLabel()をviewDidLoadからも呼び出しておきます。最終的なviewDidLoadは以下のようになります。
override func viewDidLoad() {
super.viewDidLoad()
UIDevice.current.isBatteryMonitoringEnabled = true
NotificationCenter.default.addObserver(self, selector: #selector(batteryLevelDidChange), name: UIDevice.batteryLevelDidChangeNotification, object: nil)
updateBatteryStateLabel()
}動作確認
コードを実機で実行すると、バッテリーの状態に応じて、下の画像のようにさまざまな状態がラベルに表示されます。シミュレーターではバッテリー状態が「Unknown」になるため、必ず実機で確認してください。

まとめ
iOSでバッテリー情報を扱うポイントは以下の3つです。
isBatteryMonitoringEnabledをtrueにして監視を有効化するUIDevice.current.batteryStateやUIDevice.current.batteryLevelで現在の状態・残量を取得するUIDevice.batteryLevelDidChangeNotificationなどの通知で変化をリアルタイムに検知する
これらを組み合わせることで、省エネモードへの切り替え提案や、低残量時の機能制限など、バッテリー状況に応じた柔軟なアプリ設計が可能になります。ぜひ実際のプロジェクトでも活用してみてください。
-
【完全ガイド】iPhone・Androidで中国版TikTok「抖音(Douyin)」を入手する方法
TikTokは、短い動画を投稿してファンベースを築ける人気プラットフォームです。リリース直後から世界中で爆発的な人気を博しましたが、その一方で、曖昧なプライバシーポリシーやユーザーデータ保護の不備が批判を集め、インド、アメリカ、バングラデシュなど複数の国で利用が禁止されました。それでもTikTokのファンは諦めず、スマートフォンにアプリをインストールする方法を探し続けています。 実はあまり知られていないのですが、「抖音(Douyin/ドウイン)」と呼ばれる中国版TikTokを代わりにインストールすることができます。この記事では、iOSおよびAndroidデバイスで中国版TikTok(Douy
-
iPhoneやiPadがハッキングされる仕組みとは?最新のセキュリティ脆弱性と対策を徹底解説
高いセキュリティ性能で知られるApple製品ですが、近年はサイバー攻撃の標的となるケースが増えています。高度なハッカーによる攻撃やセキュリティ対応の遅れなど、Appleユーザーは常に脅威にさらされているのです。Appleは新たなアップデートを継続的にリリースしていますが、macOS Big Sur 11.5.1以前、またはiOS/iPadOS 14.7.1以前のバージョンを使用している場合、影響を受ける可能性があります。このセキュリティ警告は「高リスク」とされており、決して軽視できません。ここでは、Appleデバイスのユーザーに被害をもたらしうる問題について詳しく解説します。 Appleのアッ