Я использую 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
Проблема, которую я получаю, заключается в том, что иногда музыка не исчезает после завершения оповещения. С некоторой отладкой я обнаружил, что свойство аудио сеанса
устанавливается правильно, но по какой-то причине его игнорируют.
Я также заметил во время тестирования, что, когда музыка не исчезает, если я просто приостанавливаю и играю музыку вручную на устройстве, она становится нормальной.
Как справиться с этим программно?
Edit:
Проблема возникает, когда приложение работает в фоновом режиме