我们使用CallKit和PortSIP编写VoIP应用程序,这里有一个问题只在iOS 11.2.x上重现。当用户在CallKit提供的屏幕上点击扬声器按钮时,系统会启用扬声器,但图标仍处于禁用状态。如果用户再次点击,系统也会打开扬声器并忘记按钮。要禁用扬声器,用户必须点击两次按钮。有人遇到过这个错误吗?你们的解决方案是什么?(:)
谢谢。
谢谢。
RTCDispatcher.dispatchAsync(on: RTCDispatcherQueueType.typeAudioSession) {
let audioSession = RTCAudioSession.sharedInstance()
audioSession.lockForConfiguration()
let configuration = RTCAudioSessionConfiguration.webRTC()
configuration.categoryOptions = [AVAudioSessionCategoryOptions.allowBluetoothA2DP,AVAudioSessionCategoryOptions.duckOthers,
AVAudioSessionCategoryOptions.allowBluetooth]
try? audioSession.setConfiguration(configuration)
audioSession.unlockForConfiguration()
}
这对我的CallKit有帮助。扬声器按钮按预期工作。
func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) { }
- Алексей Смольский AVAudioSession.Category.playAndRecord,
mode: AVAudioSession.Mode.voiceChat,
options: [.duckOthers, .allowBluetoothA2DP, .allowBluetooth]
)```
我在所有项目中都使用它。也许之后有人会更改AVAudioSession。
- Алексей Смольский之前的版本也遇到了同样的问题,所以这不是通话工具上发生的新问题。
这个问题必须从iOS端解决,我们无法控制。