はじめに
たまたまTwitterで#swiftuiを検索していたら見つけたので、ちょっと作ってみました。
今のバッテリー残量にどうやってアクセスするんだろう…
— ふってぃプログラミング初心者SwiftUI (@Futty_99) March 31, 2020
UIKitのサンプルはたくさんあるのにSwiftUIはとても少ないのが少し大変ですね😭#SwiftUI#プログラミング初心者#駆け出しエンジニアと繋がりたい
バッテリー残量を取るには
バッテリー残量を取るには、下記のコードで取得できます。
BatteryViewModel.swift
//バッテリー監視を開始する
UIDevice.current.isBatteryMonitoringEnabled = true
//変化通知登録しただけなので初回は更新する必要がある
remain = String(format: "%0.1f", UIDevice.current.batteryLevel * 100)
status = UIDevice.current.batteryState
その後の変化通知をNotificationCenter
で受け取れます。
BatteryViewModel.swift
//バッテリーレベル変化通知を受け取れるようにする
NotificationCenter.default.addObserver(self, selector: #selector(batteryLevelChanged(notification:)), name: UIDevice.batteryLevelDidChangeNotification, object: nil)
//バッテリー状態編か通知を受け取れるようにする
NotificationCenter.default.addObserver(self, selector: #selector(batteryStateChanged(notification:)), name: UIDevice.batteryStateDidChangeNotification, object: nil)
バッテリー残量をViewに反映する
ObservableObjectで反映します。
BatteryViewModel.swift
class BatteryViewModel: ObservableObject {
///バッテリー状態
@Published var status: UIDevice.BatteryState = .unknown
///バッテリー残量
@Published var remain = ""
終わりに
サンプルコードは、githubにアップしています。
参考にどうぞ。