Я использую MPMusicPlayerController для воспроизведения музыки с устройства с помощью iPodMusicPlayer. И через равные промежутки времени проигрывайте оповещения с помощью AVPlayer. Код выглядит так
-(void) duckMusic
{
UInt32 on=1;
AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck,sizeof(on),&on);
AudioSessionSetActive(true);
}
-(void) unDuckMusic
{
UInt32 on=0;
AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck,sizeof(on),&on);
AudioSessionSetActive(false);
}
Я вызываю первый метод непосредственно перед воспроизведением предупреждения, а второй метод вызываю после получения уведомления AVPlayerItemDidPlayToEndTimeNotification
Проблема, с которой я сталкиваюсь, заключается в том, что иногда музыка не исчезает после завершения оповещения. С некоторой отладкой я обнаружил, что свойство аудиосеанса установлено правильно, но по какой-то причине оно игнорируется.
Я также заметил во время тестирования, что, когда музыка не затухает, если я просто приостанавливаю и проигрываю музыку вручную на устройстве, она становится нормальной.
Как с этим справиться программно?
Изменить:
Проблема возникает, когда приложение работает в фоновом режиме.