Как возобновить фоновую музыку после исходящего телефонного звонка (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?
И у вас плохая реализация методов делегата. См документы
- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player
- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withFlags:(NSUInteger)flags
Поэтому попробуйте реализовать их так, и это должно работать правильно