The immediate problem I see is that you're registering to be notified when the charging status changes in the future, but not configuring what to do with the idle timer before the state of the charger actually changes.
For example, if you build to your device, it is plugged in and charging (possibly full) and unless you unplug your device, the UIDeviceBatteryStateDidChangeNotification
has no reason to be posted.
Consider something like this:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(batteryStateDidChange:)
name:UIDeviceBatteryStateDidChangeNotification object:nil];
[self batteryStateDidChange:nil];