AVAudioRecorder не записывает в фоновом режиме после прекращения аудио сеанса
Я записываю аудио в своем приложении, как на переднем плане, так и в фоновом режиме. Я также обрабатываю AVAudioSessionInterruptionNotification, чтобы остановить запись, когда прерывание начинается, и начать снова, когда оно заканчивается. Хотя на переднем плане это работает, как и ожидалось, когда приложение записывает в фоновом режиме, и я получаю вызов, оно не начинает запись снова после завершения вызова. Мой код следующий:
- (void)p_handleAudioSessionInterruptionNotification:(NSNotification *)notification
{
NSUInteger interruptionType = [[[notification userInfo] objectForKey:AVAudioSessionInterruptionTypeKey] unsignedIntegerValue];
if (interruptionType == AVAudioSessionInterruptionTypeBegan) {
if (self.isRecording && !self.interruptedWhileRecording) {
[self.recorder stop];
self.interruptedWhileRecording = YES;
return;
}
}
if (interruptionType == AVAudioSessionInterruptionTypeEnded) {
if (self.interruptedWhileRecording) {
NSError *error = nil;
[[AVAudioSession sharedInstance] setActive:YES error:&error];
NSDictionary *settings = @{
AVEncoderAudioQualityKey: @(AVAudioQualityMax),
AVSampleRateKey: @8000,
AVFormatIDKey: @(kAudioFormatLinearPCM),
AVNumberOfChannelsKey: @1,
AVLinearPCMBitDepthKey: @16,
AVLinearPCMIsBigEndianKey: @NO,
AVLinearPCMIsFloatKey: @NO
};
_recorder = [[AVAudioRecorder alloc] initWithURL:fileURL settings:settings error:nil];
[self.recorder record];
self.interruptedWhileRecording = NO;
return;
}
}
}
Обратите внимание, что fileURL указывает на новый файл caf в подкаталоге NSDocumentDirectory. Фоновый режим аудио настроен. Я также попробовал voip и играть тишину, но безуспешно.
Ошибка NSE в блоке AVAudioSessionInterruptionTypeEnded является ошибкой OSStatus 560557684, которую я не нашел, как ее устранить.
Любая помощь приветствуется.