Приложение не воспроизводит звук при выключенном экране, но делает все остальное как следует? - PullRequest
2 голосов
/ 25 февраля 2011

У меня есть приложение-будильник, которое работает по таймеру. Когда предполагается отключить будильник и выключить экран, он должен начать воспроизведение звука с AVAudioPlayer, но это не так. Затем, когда я снова включаю экран, я вижу, что остальная часть кода сработала, как и ожидалось (кнопка «Стоп» теперь на экране). Как заставить AVAudioPlayer проигрываться при выключенном экране?

Можно ли как-нибудь обнаружить, что экран выключен?

Ответы [ 2 ]

3 голосов
/ 25 февраля 2011

@ zoul правильно, что использование категории аудио сеанса по умолчанию приведет к отключению звука в приложении, когда пользователь заблокирует экран. См. Руководство по программированию аудиосеанса , в котором указывается, какую категорию аудиосеанса вы должны выбрать.

Однако, даже если ваша категория аудио-сеанса установлена ​​правильно, вам придется решать еще одну проблему. Когда экран выключен, ваше приложение приостанавливается в соответствии с документацией Apple здесь: Выполнение кода в фоновом режиме . Это означает, что когда пользователь блокирует свой телефон или переключается на другое приложение, ваше приложение перестает работать и остается в режиме «заморозки» (приостановлено заданием), пока пользователь снова не активирует ваше приложение. В этот момент ваше приложение возобновляет выполнение, как будто ничего не произошло. Вот почему кажется, что ваше приложение продолжало работать, когда вы разблокировали экран.

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

0 голосов
/ 25 февраля 2011

Может быть, у вас неправильная категория аудио? См. Документацию для AVAudioSession , особенно настройки аудио категории.

...