Как возобновить фоновую музыку после исходящего телефонного звонка (iOS)?

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

- (void)audioPlayerEndInterruption:(AVAudioPlayer *)thePlayer {
    [[AVAudioSession sharedInstance] setActive:YES error:nil];
    [self.player play];
}

но это не позволит музыке продолжаться.

Я также попытался использовать метод AVAudioSessionDelegate (просто попытка):

- (void)viewDidLoad {
    [[AVAudioSession sharedInstance] setDelegate:self];
}

- (void)endInterruption
{
    [[AVAudioSession sharedInstance] setActive:YES error:nil];
    [self.player play];
}

но опять же это не заставит музыку возобновиться. Есть идеи о том, как решить эту проблему?

3 ответа

На iOS приложение не может начать воспроизведение звука, когда оно уже находится в фоновом режиме. Если звук вашего приложения остановлен из-за того, что приложение переднего плана взяло под контроль аудиосеанс, в настоящее время нет способа вернуть его обратно.

Вы можете возобновить это. После завершения аудио-сеанса вы должны уведомить другое приложение о том, что мое приложение отключает аудио-сеанс, и вы можете использовать его. Используйте следующий код.

[[AVAudioSession sharedInstance] setActive:NO withFlags:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:&error];

Странно из вашего кода, вы говорите, что вы используете AVAudioPlayer, почему вы тогда реализуете AVAudioSessionDelegate?

И у вас плохая реализация методов делегата. См документы

от AVAudioPlayerDelegate:

- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player

- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withFlags:(NSUInteger)flags

Поэтому попробуйте реализовать их так, и это должно работать правильно

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