应用不会将音频路由到耳机(最初)



我有一个使用Sinch SDK和CallKit实现的VOIP应用程序。除了设备插上耳机外,一切都很好。在后一种情况下,当通话开始时,音频仍然通过设备的主扬声器传输。如果我在通话过程中拔下耳机并将其插回,音频就会正确地传输到耳机。

我所做的就是

func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) {
guard let c = self.currentCall else {
action.fail()
return
}
c.answer()
self.communicationClient.audioController().configureAudioSessionForCallKitCall()
action.fulfill()
}

这难道不应该由操作系统自动处理吗?

Sinch SDK似乎覆盖了输出音频端口。请尝试在音频会话配置后立即运行此代码:

do {
try AVAudioSession.sharedInstance().overrideOutputAudioPort(.none)
} catch {
print("OverrideOutputAudioPort failed: (error)")
}

如果不起作用,请尝试自己配置音频会话,如果可以的话,不要依赖Sinch SDK。将configureAudioSessionForCallKitCall调用替换为以下内容:

let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(
.playAndRecord,
mode: .voiceChat,
options: [.allowBluetooth, .allowBluetoothA2DP])
try session.setActive(true)
} catch {
print("Unable to activate audio session: (error)")
}

最新更新