Обнаруживать, если устройство заряжается

Я не могу найти что-то определенное, используя мой любимый инструмент , но я думал, что я его вытащу …

Есть ли способ использовать iPhone SDK для приложения, чтобы определить, находится ли устройство в состоянии приема питания (зарядка, док-станция и т. Д.)?

Я хотел бы иметь возможность автоматически отключать idleTimer, если устройство получает питание (в противном случае это заданная пользователем настройка).

Да, UIDevice может сказать вам следующее:

[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES]; if ([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateCharging) { NSLog(@"Device is charging."); } 

См. Ссылку UIDevice в документах для получения дополнительной информации и других значений batteryState.

Вам лучше использовать:

 [[UIDevice currentDevice] setBatteryMonitoringEnabled:YES]; if ([[UIDevice currentDevice] batteryState] != UIDeviceBatteryStateUnplugged) { [UIApplication sharedApplication].idleTimerDisabled=YES; } 

Это связано с тем, что вам приходится беспокоиться о двух разных состояниях: одно – зарядка аккумулятора , а другая – при полной зарядке .

Если вы действительно хотели быть об этом, вы должны зарегистрироваться для получения уведомлений о мониторинге батареи, чтобы вы могли повторно включить таймер простоя, если пользователь отключил основную мощность и т. Д.

Swift 4

 UIDevice.current.isBatteryMonitoringEnabled = true if (UIDevice.current.batteryState != .unplugged) { print("Device is charging.") } 

Swift 3

 UIDevice.currentDevice().batteryMonitoringEnabled = true; if (UIDevice.currentDevice().batteryState != .Unplugged) { print("Device is charging."); } 

Swift 3:

 UIDevice.current.isBatteryMonitoringEnabled = true let state = UIDevice.current.batteryState if state == .charging || state == .full { print("Device plugged in.") } 

Вы можете использовать центр уведомлений darwin и использовать имя события com.apple.springboard.fullycharged .

Таким образом, вы получите уведомление о своем пользовательском методе, вот код:

 // Registering for a specific notification NSString *notificationName = @"com.apple.springboard.fullycharged"; CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, yourCustomMethod, (__bridge CFStringRef)notificationName, NULL, CFNotificationSuspensionBehaviorDeliverImmediately); 

 // The custom method that will receive the notification static void yourCustomMethod(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) { NSString *nameOfNotification = (__bridge NSString*)name; if([nameOfNotification isEqualToString:notificationName]) { // Do whatever you want... } } 
  • Как сделать iPhone-приложение совместимым с несколькими версиями SDK (прошивки)
  • Могу ли я делать запросы POST или GET из приложения iphone?
  • Играет много разных видео на iphone, используя AVPlayer
  • Текстовые библиотеки для iPhone
  • Сохранение информации Geotag с фотографией на iOS4.1
  • Получить текущий URL-адрес UIWebView
  • Xcode - обновить текст метки ViewController с другого вида
  • Обнаруживать iPhone / iPad исключительно css
  • `` соглашение
  • Как делиться или отправлять по почте, твиттеру и facebook из текущего приложения?
  • UIImageView Touch Event
  • Interesting Posts

    SimpleForm без (не модель)

    проверка имени пользователя или электронной почты пользователя уже существует

    Можно ли создать ярлык для отправки электронной почты Outlook из шаблона?

    Как std :: move () переносит значения в RValues?

    Есть ли способ изменить формат ввода = «дата»?

    System.Drawing в службах Windows или ASP.NET

    Сортировка массива объекта по свойству (с пользовательским порядком, а не в алфавитном порядке)

    Забыл пароль ключа, думая об обнаружении Брута-Силы. будет ли он испортить хранилище ключей?

    Как использовать $ http promise ответ вне успеха обработчик

    Как служба Windows может определить свое имя службы?

    Как определить размер экрана устройства (маленький, обычный, большой, xlarge) с помощью кода?

    Хорошее программное обеспечение для перевода (вручную)

    Одновременные распознаватели жестов в Iphone SDK

    Лучший способ добавить активность в проект Android в Eclipse?

    Как изменить каталог данных MySQL?

    Давайте будем гением компьютера.