AVAudioPlayer не воспроизводится через некоторое время, когда приложение находится в фоновом режиме

#ios #swift #avaudioplayer

Вопрос:

Я создаю приложение для будильника. Для воспроизведения звука будильника в соответствующее время я использую myAudioPlayer.play(atTime: myAudioPlayer.deviceCurrentTime secondsUntilAlarm) . Таким образом, даже если приложение находится в фоновом режиме, аудиоплеер воспроизводит звуковой сигнал в соответствующее время.

Примечание: Я получил эту идею из другого ответа SO, который, к сожалению, я не могу найти прямо сейчас.

Однако я заметил, что сигналы тревоги воспроизводятся правильно, если secondUntilAlarm значение относительно скоро, например, 20 минут или меньше (конечно, преобразуется в секунды, так как этого требует метод). Однако, если это больше, чем это, звук не воспроизводится. Есть ли что-то, чего мне не хватает в том, как этот метод работает в фоновом режиме? Может ли приложение войти в какое-то приостановленное состояние или что-то, что отключает воспроизведение аудиоплеера?

Любые предложения или комментарии будут оценены-спасибо!

Комментарии:

1. Да, приложение определенно приостанавливается. Приложения на iOS не просто вечно работают в фоновом режиме. Вам придется использовать что — то вроде локального уведомления.

2. @jnpdx Я понял, что функция все еще работает, пока приложение находится в приостановленном состоянии! Просто нужно было добавить mixWithOthers , чтобы мой аудиосеанс не был отключен..

Ответ №1:

Поэтому я фактически определил, что не имеет значения, переходит ли приложение в состояние приостановки (на самом деле это ожидается). Я определил, что причина, по которой звук будильника иногда не воспроизводится, заключается в том, что я открываю другое приложение со звуком, которое отключает аудиосессию моего приложения (следовательно, это не имеет никакого отношения ко времени, на которое установлен будильник). Чтобы исправить это, все, что мне нужно было сделать, это убедиться, что я настроил .mixWithOthers аудиосессию своего приложения. Таким образом, другие аудиосеансы из других приложений не отключают мои!