iOS
 Computer >> コンピューター >  >> プログラミング >> iOS

【Swift】iOSでバッテリー残量と状態(充電中・放電中・満充電など)を取得する方法

本記事では、iOSアプリでデバイスのバッテリー状態(充電中・放電中・満充電など)やバッテリー残量を取得する方法を、Swiftのコード例とともにわかりやすく解説します。

全体の流れ

バッテリー情報を取得するには、主に以下の手順を行います。

  • バッテリー監視機能を有効化する
  • 現在のバッテリー状態を取得するプロパティを用意する
  • バッテリー状態の変化を受け取る通知オブザーバーを登録する
  • UI(ラベル)に状態を反映する

それでは、順番に見ていきましょう。

ステップ1:プロジェクトを作成する

Xcodeを開き、「New Project → Single View Application」を選択して、新しいプロジェクトを作成します。ここではプロジェクト名を「BatteryState」とします。

ステップ2:StoryboardにUIを配置する

Main.storyboardを開き、以下のように2つのラベルを配置します。これらのラベルにバッテリーの状態を表示していきます。

【Swift】iOSでバッテリー残量と状態(充電中・放電中・満充電など)を取得する方法

ステップ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」になるため、必ず実機で確認してください。

【Swift】iOSでバッテリー残量と状態(充電中・放電中・満充電など)を取得する方法

まとめ

iOSでバッテリー情報を扱うポイントは以下の3つです。

  1. isBatteryMonitoringEnabledtrueにして監視を有効化する
  2. UIDevice.current.batteryStateUIDevice.current.batteryLevelで現在の状態・残量を取得する
  3. UIDevice.batteryLevelDidChangeNotificationなどの通知で変化をリアルタイムに検知する

これらを組み合わせることで、省エネモードへの切り替え提案や、低残量時の機能制限など、バッテリー状況に応じた柔軟なアプリ設計が可能になります。ぜひ実際のプロジェクトでも活用してみてください。

  1. 【完全ガイド】iPhone・Androidで中国版TikTok「抖音(Douyin)」を入手する方法

    TikTokは、短い動画を投稿してファンベースを築ける人気プラットフォームです。リリース直後から世界中で爆発的な人気を博しましたが、その一方で、曖昧なプライバシーポリシーやユーザーデータ保護の不備が批判を集め、インド、アメリカ、バングラデシュなど複数の国で利用が禁止されました。それでもTikTokのファンは諦めず、スマートフォンにアプリをインストールする方法を探し続けています。 実はあまり知られていないのですが、「抖音(Douyin/ドウイン)」と呼ばれる中国版TikTokを代わりにインストールすることができます。この記事では、iOSおよびAndroidデバイスで中国版TikTok(Douy

  2. iPhoneやiPadがハッキングされる仕組みとは?最新のセキュリティ脆弱性と対策を徹底解説

    高いセキュリティ性能で知られるApple製品ですが、近年はサイバー攻撃の標的となるケースが増えています。高度なハッカーによる攻撃やセキュリティ対応の遅れなど、Appleユーザーは常に脅威にさらされているのです。Appleは新たなアップデートを継続的にリリースしていますが、macOS Big Sur 11.5.1以前、またはiOS/iPadOS 14.7.1以前のバージョンを使用している場合、影響を受ける可能性があります。このセキュリティ警告は「高リスク」とされており、決して軽視できません。ここでは、Appleデバイスのユーザーに被害をもたらしうる問題について詳しく解説します。 Appleのアッ