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];
Edit:
Я уже реализовал и обработал audioPlayerBeginInterruption
Изменить # 2: Решено! Благодаря Ответный ритмический фистман
Вот что происходило и что я делал. Изменения iOS5 теперь подталкивают ваше приложение к фону, даже когда экран блокируется. Это означает, что вам необходимо включить фоновый звук в вашем приложении и сделать любой вид view/viewcontroller обработчиком этого аудиосигнала первым отвечающим.
Шаг 1:
Включить фоновый звук в приложении
Шаг 2:
Включить удаленные события и стать первым ответчиком на viewcontroller/view, ответственном за обработку вашего аудио-плейлиста
Примечание:
Обязательно проверьте это на устройстве. Симулятор будет казаться, что код не работает.
Ответы
Ответ 1
Скриншот изменился в iOS5, теперь он отправляет ваше приложение на задний план, поэтому, если вы хотите, чтобы ваш звук продолжался, вы должны добавить "audio" в качестве UIBackGroundModes в ваш файл Info.plist.
Ближайшая вещь, которую я могу найти для документации, это несколько
Apple devforum сообщения (требуется вход).
Ответ 2
Я не очень привык к звуку, но разве вы смотрели на перехваты? Я прочитал что-то, что сказал (в моих воспоминаниях), что звук может быть остановлен, когда происходит прерывание, и это ваша работа, чтобы заставить его снова играть.
Но это просто что-то происходит из моей памяти. Помогает ли это?