Вам необходимо установить AVAudioSession
перед воспроизведением звуков, используя AVAudioPlayer
и MPMediaPlayer
в вашем приложении, и для него есть разные категории в зависимости от того, как вы хотите, чтобы звук взаимодействовал.Хотя я понятия не имею, почему музыка будет воспроизводиться даже при нулевой громкости, другие проблемы, похоже, связаны с настройкой AVAudioSessionCategory
, которая вам не нужна.При инициализации вашего приложения или там, где вы начинаете воспроизводить звуки, попробуйте следующий код:
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
Этот код инициализирует AVAudioSession
и устанавливает его в категорию, где звуки не будут смешиваться с другимифоновые звуки (они будут остановлены, как только вы активируете сеанс) и где ваше приложение имеет приоритет.Обратите внимание, что блокировка экрана и переключатель молчания по-прежнему позволяют воспроизводить звуки (на полной громкости).Я полагаю, что вы можете установить это конкретно, но я не знаю точного кода.
Если вы хотите другое поведение для аудио, проверьте другие категории, которые вы можете установить в Документация Apple поAVAudioSession Class .Другие варианты:
AVAudioSessionCategoryAmbient;
AVAudioSessionCategorySoloAmbient;
AVAudioSessionCategoryPlayback;
AVAudioSessionCategoryRecord;
AVAudioSessionCategoryPlayAndRecord;
AVAudioSessionCategoryAudioProcessing;
В любом случае, надеюсь, проблема с аудио-сеансом была причиной этих проблем.Дайте мне знать, если это сработало.