Skyway iOS SDKにてオーディオ出力先を変更したかったのでAVAudioSessionを使ってみました。
Xcode: 9.2
Swift: 4.0.3
// サウンドの停止はオーディオトラックを無効にすることで実装 func remoteAudioOff() { self._msRemoteVideo?.setEnableAudioTrack(0, enable: false) } // デフォルト(ヘッドホン出力)の場合 func remoteAudioDefault() { self._msRemoteVideo?.setEnableAudioTrack(0, enable: false) DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) { // headphone do { try AVAudioSession.sharedInstance().setActive(true) try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord) try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.none) self._msRemoteVideo?.setEnableAudioTrack(0, enable: true) } catch { print("AVAudioSessionCategoryPlayAndRecord error") } } } // スピーカー出力の場合 func remoteAudioSpeaker() { self._msRemoteVideo?.setEnableAudioTrack(0, enable: false) DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) { // speaker do { try AVAudioSession.sharedInstance().setActive(true) try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord) try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.speaker) self._msRemoteVideo?.setEnableAudioTrack(0, enable: true) } catch { print("AVAudioSessionCategoryPlayAndRecord error") } } }