AVAudioSession : microphone headphone as input and iphone speaker as output

With iOS10 there are more possibilities to manage AUdioSession, but i couldn’t manage to keep the headphone microphone as input while audio is going out through the iphone speaker.

The ‘overrideOutputAudioPort’ method below also override the input audio port as the iphone microphone

  • How Do I Route Audio to Speaker without using AudioSessionSetProperty?
  • Class PLBuildVersion is implemented in both frameworks
  • How do I make AVCaptureSession and AVPlayer respect AVAudioSessionCategoryAmbient?
  • iOS 10 Save to Camera Roll Bug/Crash
  • iOS “thread-id” doesn't group push notifications
  • iOS AVAudioSession interruption notification not working as expected
  • let session = AVAudioSession.sharedInstance()
    do {
      try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
      try! session.overrideOutputAudioPort(.speaker)  
    } catch {

    Is there any solution to keep the headphone as input?

    Solutions Collect From Internet About “AVAudioSession : microphone headphone as input and iphone speaker as output”

    How I undeerstand this Apple documentation, this is not possible using AVAudioSession:

    If a headset is plugged in at the time you set this property’s value to kAudioSessionOverrideAudioRoute_Speaker, the system changes the audio routing for input as well as for output: input comes from the built-in microphone; output goes to the built-in speaker.