You need a combination of the three iOS features here.
1. Audio messaging category
documentation , :
public let AVAudioSessionCategoryAmbient: String
public let AVAudioSessionCategorySoloAmbient: String
public let AVAudioSessionCategoryPlayback: String
public let AVAudioSessionCategoryRecord: String
public let AVAudioSessionCategoryPlayAndRecord: String
@available(iOS, introduced: 3.0, deprecated: 10.0)
public let AVAudioSessionCategoryAudioProcessing: String
@available(iOS 6.0, *)
public let AVAudioSessionCategoryMultiRoute: String
, AVAudioSessionCategoryPlayAndRecord
:
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord)
Obj-c
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&err]
2.
, .
@available(iOS 5.0, *)
public let AVAudioSessionModeDefault: String
@available(iOS 5.0, *)
public let AVAudioSessionModeVoiceChat: String
@available(iOS 5.0, *)
public let AVAudioSessionModeGameChat: String
@available(iOS 5.0, *)
public let AVAudioSessionModeVideoRecording: String
@available(iOS 5.0, *)
public let AVAudioSessionModeMeasurement: String
@available(iOS 6.0, *)
public let AVAudioSessionModeMoviePlayback: String
@available(iOS 7.0, *)
public let AVAudioSessionModeVideoChat: String
@available(iOS 9.0, *)
public let AVAudioSessionModeSpokenAudio: String
AVAudioSessionModeVideoChat
AVAudioSession.sharedInstance().setMode(AVAudioSessionModeVideoChat)
Obj-C
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeVideoChat error:&err]
3.
/ earpiece/receiver. , ,
AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
Obj-C
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];