AVAudioPlayer перестает воспроизводиться при блокировке экрана, даже если категория AVAudioSessionCategoryPlayback

Мое приложение использует AVAudioPlayer для воспроизведения через аудио плейлисты. Я не изменил код между iOS4.3 и iOS5. Однако звук на iOS5 приостанавливается при блокировке экрана, хотя я установил категорию AVAudioSessionCategoryPlayback.

Я протестировал код на устройствах iOS4.3 и iOS5, и эта проблема возникает на устройстве iOS5.

Кто-нибудь еще сталкивался с этой проблемой? Я в растерянности, так как даже не знаю, с чего начать отладку этой проблемы. Моя отладка началась и закончилась проверкой настройки AVAudioSessionCategory.

Код, где я делаю это:

[[AVAudioSession sharedInstance] setDelegate: self];
NSError *setCategoryError = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryError];

Редактировать:

Я уже реализовал и обработал audioPlayerBeginInterruption

Редактировать № 2: Решено! Благодаря ответу Ритмика Фистмана

Вот что происходило и что я делал. Изменения iOS5 теперь отодвигают ваше приложение на задний план, даже когда экран заблокирован. Это означает, что вам нужно включить фоновое аудио в вашем приложении и сделать любой view/viewcontroller, обрабатывающий это аудио, первым респондентом.

Шаг 1. Включите фоновое аудио в вашем приложении

Шаг 2: Включите удаленные события и станьте первым респондентом в контроллере / представлении, отвечающем за обработку вашего аудио плейлиста

ПРИМЕЧАНИЕ. Обязательно проверьте это на устройстве. Симулятор покажет, что код не работает.

2 ответа

Решение

Экран блокировки изменился в iOS5, теперь он отправляет ваше приложение в фоновый режим, поэтому, если вы хотите, чтобы ваше аудио продолжалось, вы должны добавить "audio" в качестве UIBackGroundModes в ваш файл Info.plist.

Наиболее близкая вещь, которую я могу найти к документации об этом, - это несколько постов Apple Devforum (требуется вход в систему).

Я не очень привык к аудио, но вы смотрели про интерпшнс? Я читал что-то, что говорило (по моим воспоминаниям), что звук может быть остановлен, когда произойдет прерывание, и ваша работа - заставить его воспроизводиться снова.

Но это просто что-то из моей памяти. Это помогает?

Другие вопросы по тегам