У меня есть приложение, которое требует, чтобы экран iPhone остался активным (или не, в зависимости от пользовательского выбора). Я сделал это путем отключения приложения неактивный таймер, который хорошо работает и денди, пока я не начинаю играть с медиа через MPMusicPlayerController. Из-за ошибки в SDK, это тогда повторно включает неактивный таймер без очевидного способа отключить его снова.
Мой поток приложения:
У меня есть пустой звуковой файл, играющий в фоновом режиме для остановки телефона, входящего в глубокий сон, но я действительно хотел бы сохранить экран разблокированным также.
Кому-либо удалось выяснить обходное решение для этого?
Вы должны просто отключить таймер простоя. Обычно я делаю во вьюконтроллере, который должен "бодрствовать", следующее:
- (void) viewWillAppear:(BOOL)animated
{
[[UIApplication sharedApplication] setIdleTimerDisabled: YES];
}
- (void) viewWillDisappear: (BOOL) animated
{
[[UIApplication sharedApplication] setIdleTimerDisabled: NO];
}
Это гарантирует, что экран не будет заблокирован из-за бездействия пользователя.
Я нашел решение этой проблемы. Вызов метода, который отключает idleTimer примерно через 5 секунд после начала воспроизведения музыки. Это немного похоже на взлом, но это обходной путь.
[[SoundEngine mainEngine] playMusic];
[self performSelector:@selector(setIdleTimeDisabled) withObject:nil afterDelay:5.0];
- (void) setIdleTimeDisabled {
[UIApplication sharedApplication].idleTimerDisabled = YES;
NSLog(@"Setting idleTimer to TRUE");}
У меня была похожая проблема, и я нашел решение. Это решение может сработать и у вас:
Я периодически (каждые 10 секунд) вызываю метод, который устанавливает idleTimerDisabled сначала в NO, затем в YES.
- (void)calledEveryTenSeconds
{
[UIApplication sharedApplication].idleTimerDisabled = NO;
[UIApplication sharedApplication].idleTimerDisabled = YES;
}
Только установка в YES не устраняет проблему. Похоже, что свойство должно сначала измениться, чтобы его распознало UIApplication.
Моя проблема заключалась в том, что экран продолжал темнеть, как только я переключал музыкальные треки на плеере iPod с помощью пульта ДУ для наушников. Я думаю, что это та же проблема, что и у вас.