У меня возникают непредвиденные проблемы, связанные с фоновой записью (особенно когда экран становится заблокированным паролем). В итоге мое приложение AVAudioRecorder, похоже, правильно записывает на переднем плане, в фоновом режиме (при переключении приложений) и когда экран выключен (но до активации блокировки доступа).
Если я откладываю блокировку паролем (Настройки> Код доступа> Требовать пароль> 4 часа. И т. Д.), то запись работает без проблем при переключении переднего плана / фона / приложения / выключения экрана. И т. Д., Но когда проходит -Блокировка кайф в записи становится коррумпированной.
Я в основном использую код AVAudioRecorder для записи звука и следую инструкциям, установив параметр 'UIBackgroundModes / audio' в app.plist, чтобы обеспечить фоновую запись, которая, похоже, работает в фоновом режиме (т.е. Появляется красная полоса записи), но происходит сбой, когда код доступа становится активным, т. Е. Пользователь нажимает кнопку питания и ему требуется ввести пароль для доступа к устройству.
Мой код настроен на обработку звуковых прерываний с помощью ‘AVAudioSessionInterruptionNotification’, а AVAudioSession настроен как ‘withOptions: AVAudioSessionCategoryOptionDuckOthers, чтобы минимизировать внешние события, влияющие на фоновую запись.
[Процедура тестирования]
Блокировка паролем (iPhone 5 / iOS8.1> Настройки> Пароль> Требовать пароль> Через 5 минут)
[Success-CASE-1] «Начать запись» на 7 минут. Оставить экран включенным, а приложение активным / видимым (т.е. не работает в фоновом режиме после начала записи) >> Запись работает, и после нажатия «Остановить запись» звук сохраняется и может воспроизводиться назад.
[Success-CASE-2] «Начать запись» на 7 минут. Оставить экран включенным и переключить приложения (т. Е. Работать в фоновом режиме с включенным экраном и красной полосой записи, отображаемой после начала записи) >> Запись работает и после нажатия «Остановить запись» звук сохраняется и может быть воспроизведен.
[Failure-CASE] «Начать запись» на 7 минут Выключить экран (т.е. приложение работает в фоновом режиме с выключенным экраном устройства) >> Через 7 минут с выключенным экраном устройству требуется пароль, когда экран включен. Запись неожиданно останавливается, становится поврежденным, воспроизведение невозможно.
Блокировка паролем (iPhone 5 / iOS8.1> Настройки> Пароль> Требовать пароль> Через 15 минут)
- [Repeat-Failure-CASE with Adjusted Passlock] ‘Start Recording’ for 7mins Switch Screen Off (i.e. app is running in background with devices screen off) >> After 7mins with Screen-Off, device is switched on (no pass lock is needed this time). Recording is okay, works perfectly and can be played back.
Единственная разница между Failure-CASE и Repeat-Failure-CASE заключается в том, что пароль для блокировки экрана не требуется.
[Примечания]
- Протестировано с использованием XCode 6.1 на iPhone 4/5/6, iPad Mini 2 (iOS8.1) с той же проблемой.
- Код представляет собой стандартный код AVAudioRecorder с настройкой AVAudioSession, аналогичной: http://www.jacopretorius.net/2013/04/record-and-playback-audio-in-ios.html
..
Надеюсь, информация поможет, потребовалось много проб и ошибок, чтобы добраться до этого момента.
кто-нибудь еще сталкивался с этой проблемой? как это довольно странно.
Благодарность