Я знаю, что есть принятый ответ, но я не думаю, что это совершенно правильно. Некоторые навигационные приложения (например, Waze) могут передавать звуковые дорожки во время телефонных звонков. Если вы используете AVAudioPlayer
, вы можете обрабатывать перерывы (т. Е. Телефонные звонки), отвечая на делегат audioPlayerBeginInterruption:
(вы можете узнать больше об этом here).
В то время как у меня не было слишком много времени, чтобы посмотреть на него мне удалось сыграть короткий звуковой файл при инициализации телефонного вызова или воспроизведения песни, используя следующий код:
-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)player
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"mySound" ofType:@"mp3"];
SystemSoundID soundFileObject;
NSURL *pathURL = [NSURL fileURLWithPath : path];
CFURLRef soundFileURLRef = (CFURLRef)CFBridgingRetain(pathURL);
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundFileObject);
AudioServicesPlaySystemSound(soundFileObject);
}
Хранить в помните, что, когда прерывание приходит в вашем приложении, может быть подпольно или приостановлено, что также повлияет на вашу способность воспроизводить звуки (или запустить любой другой код, если на то пошло).
Это возможно, так как у меня в настоящее время возникает эта проблема, когда у нас есть отчет об ошибке, который звучит: звук из приложения слышен из динамика ушной трубки даже во время телефонных звонков. Я еще не изучал этот вопрос. – Jonny