Я разрабатываю приложение VoIP, которое использует Twilio для телефонии. Проблема, с которой я столкнулся, заключается в том, что если AVAudioSession прерывается во время выполнения вызова, например, из-за входящего вызова FaceTime, я не могу продолжать использовать аудиосеанс после окончания прерывания. Звонок не отключается, но звука не слышно и микрофон тоже ничего не записывает.
Я зарегистрировался для AVAudioSessionInterruptionNotification и в обработчике уведомлений делаю следующее:
// get the user info dictionary
NSDictionary *interuptionDict = notification.userInfo;
// get the AVAudioSessionInterruptionTypeKey enum from the dictionary
NSInteger interuptionType = [[interuptionDict valueForKey:AVAudioSessionInterruptionTypeKey] integerValue];
// decide what to do based on interruption type here...
switch (interuptionType)
{
case AVAudioSessionInterruptionTypeBegan:
DLog(@"Audio Session Interruption case started.");
[self setAudioSessionActive:NO];
break;
case AVAudioSessionInterruptionTypeEnded:
{
DLog(@"Audio Session Interruption case ended.");
[self setAudioSessionActive:YES];
break;
}
default:
DLog(@"Audio Session Interruption Notification case default.");
break;
}
// Activate or deactivate the app's audio session
- (void)setAudioSessionActive:(BOOL)active
{
BOOL success = NO;
NSError *error = nil;
success = [[AVAudioSession sharedInstance] setActive:active error:&error];
if (error)
{
DLog(@"Error setting audio session : %@", [error description]);
}
else if (success)
{
DLog(@"Audio session state set successfully :")
}
}
Я не получаю никаких ошибок, но текущий вызов просто не работает.
Я прочитал Руководство по программированию аудиосеансов, Руководство по интерфейсу пользователя для аудио и другую документацию Apple, связанную со звуком. Я считаю, что делаю правильные шаги. Пожалуйста, дайте любые предложения, как то, что я мог бы пропустить здесь.