Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS how to detect if power cable is plugged

I am making a GPS app and the accuracy changes based on if power is available (ie vehicle charger)

Is there a way to run something in the background that constantly checks to see if a device is receiving power?

I know how to check if power is connected. But the issue is IF the user is at home and connected. He unplugs the device to go out on a run. Then decides to hang out. My app checks the battery state on launch. How can I check it again and again. I don't want to drain his battery because he was using my app!

We plan on only supporting iOS 5 and higher (no need for backward compatibility with iOS 4 and 3)

Thanks

like image 330
Cocoa Dev Avatar asked Jul 05 '12 13:07

Cocoa Dev


1 Answers

Have a look at the UIDevice class reference.

There is a property called batteryState that returns a UIDeviceBatteryState. So, to see if the device is charging or is plugged in and full.

UIDeviceBatteryState currentState = [[UIDevice currentDevice] batteryState];
if (currentState == UIDeviceBatteryStateCharging || currentState == UIDeviceBatteryStateFull) {
    // The battery is either charging, or connected to a charger and is fully charged
}

Edited to add

If you want to continuously monitor the state, take a look at the batteryMonitoringEnabled property and then handle the UIDeviceBatteryStateDidChangeNotification to update whatever you want to.

iOS is event driven. Checking the state of something within a while loop is something you very rarely need to do.

like image 77
Abizern Avatar answered Sep 22 '22 13:09

Abizern