ในโพสต์นี้เราจะมาดูวิธีรับสถานะแบตเตอรี่ใน iOS
มาเริ่มกันเลย
ขั้นตอนที่ 1 − เปิด Xcode → โครงการใหม่ → แอปพลิเคชั่นมุมมองเดียว → ตั้งชื่อมันว่า "BatteryState"
ขั้นตอนที่ 2 − เปิด Main.storyboard และเพิ่มป้ายกำกับสองรายการดังที่แสดงด้านล่าง เราจะแสดงสถานะแบตเตอรี่บนป้ายกำกับนี้
ขั้นตอนที่ 3 - เปิดใช้งานการตรวจสอบสถานะแบตเตอรี่โดยใช้รหัสต่อไปนี้ คุณสามารถใส่รหัสนี้ใน viewDidLoad ของ ViewController
UIDevice.current.isBatteryMonitoringEnabled = true
ขั้นตอนที่ 4 − ประกาศตัวแปรเพื่อคงสถานะแบตเตอรี่ เราจะตั้งชื่อตัวแปรนี้ว่า batteryState จากตัวแปรนี้ เรากำลังส่งคืน UIDevice.current.batteryState ซึ่งจะให้สถานะแบตเตอรี่ปัจจุบันแก่เรา
var batteryState: UIDevice.BatteryState { return UIDevice.current.batteryState }
ขั้นตอนที่ 5 − คุณจะต้องเพิ่มผู้สังเกตการณ์สำหรับการแจ้งเตือนการเปลี่ยนแปลงสถานะแบตเตอรี่ iOS จะส่งการแจ้งเตือนนี้ทุกครั้งที่สถานะแบตเตอรี่เปลี่ยนแปลง คุณสามารถเพิ่มผู้สังเกตการณ์ใน viewDidLoad ดังที่แสดงด้านล่าง
NotificationCenter.default.addObserver(self, selector: #selector(batteryLevelDidChange), name: UIDevice.batteryLevelDidChangeNotification, object: nil)
เราได้เพิ่มผู้สังเกตการณ์แล้ว ฟังก์ชัน batteryLevelDidChange จะถูกเรียกเมื่อใดก็ตามที่ระดับแบตเตอรี่เปลี่ยนแปลง
ขั้นตอนที่ 6 - จัดการการเปลี่ยนแปลงระดับแบตเตอรี่ในวิธี batteryLevelDidChange กำหนดวิธีการดังต่อไปนี้
@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 ควรเรียกใช้ฟังก์ชัน 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() }
เรียกใช้รหัสบนอุปกรณ์ ตามสถานะแบตเตอรี่ คุณจะเห็นสถานะต่างๆ ตามที่แสดงในภาพด้านล่าง