2015-02-18 1 views
2

Мы стремимся разработать приложение, которое будет предупреждать пользователей, если их уровень заряда батареи упадет ниже определенного процента, однако мы находим, что наше приложение не видит, чтобы получить это NSNotifications, когда оно неактивно.UIDeviceBatteryLevelDidChangeНотификация фоновых уведомлений?

Есть ли у кого-нибудь опыт использования уведомлений UIDeviceBattery и знаете, насколько это возможно, поскольку из того, что я вижу из Apple Documentation, кажется, что он должен работать.

Мы в основном делают это

-(void)startMonitoring { 

    [[UIDevice currentDevice] setBatteryMonitoringEnabled:YES]; 
    [[UIDevice currentDevice] batteryLevel]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryStatus) name:UIDeviceBatteryLevelDidChangeNotification object:nil]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryStatus) name:UIDeviceBatteryStateDidChangeNotification object:nil]; 

[self redirectNSLogToDocuments]; 
NSLog(@"Starting Monitoring"); 
} 

- (void)redirectNSLogToDocuments 
{ 
    NSArray *allPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [allPaths objectAtIndex:0]; 
    NSString *pathForLog = [documentsDirectory stringByAppendingPathComponent:@"yourFile.txt"]; 

    freopen([pathForLog cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr); 
} 

- (void)batteryStatus { 

    NSLog(@"Battery Status Notification"); 
} 

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

Заранее спасибо Аарон

+0

Какой режим фона разрешен для использования в этом случае? – Idan

ответ

2

NSNotifications не доставляются в ваше приложение в фоновом режиме. Итак, если ваше приложение не может запрашивать некоторые разрешения в фоновом режиме, нет способа выполнить этот код в фоновом режиме.

Посмотрите на https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH4-SW4 , чтобы узнать, можете ли вы использовать некоторые из этих режимов.

Смежные вопросы