AVAudioRecorder zeichnet nicht im Hintergrund auf, nachdem die Unterbrechung der Audiositzung beendet wurde

Ich nehme Audio in meiner App sowohl im Vordergrund als auch im Hintergrund auf. Ich verwende auch AVAudioSessionInterruptionNotification, um die Aufnahme zu stoppen, wenn die Unterbrechung beginnt, und um sie erneut zu starten, wenn sie endet. Obwohl es im Vordergrund wie erwartet funktioniert, wird die Aufzeichnung nach Beendigung des Anrufs nicht erneut gestartet, wenn die App im Hintergrund aufzeichnet und ich einen Anruf erhalte. Mein Code ist der folgende:

        - (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;
                }
            }
        }

Beachten Sie, dass fileURL auf eine neue Caf-Datei in einem NSDocumentDirectory-Unterverzeichnis verweist. Audio im Hintergrundmodus ist konfiguriert. Ich habe auch voip ausprobiert und stille gespielt, beides ohne erfolg.

Der NSError im AVAudioSessionInterruptionTypeEnded-Block ist ein OSStatus-Fehler 560557684, den ich nicht behoben habe.

Jede Hilfe wäre sehr dankbar.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage