系统提供的通话界面上扬声器按钮出现异常行为

6
我们使用CallKit和PortSIP编写VoIP应用程序,这里有一个问题只在iOS 11.2.x上重现。当用户在CallKit提供的屏幕上点击扬声器按钮时,系统会启用扬声器,但图标仍处于禁用状态。如果用户再次点击,系统也会打开扬声器并忘记按钮。要禁用扬声器,用户必须点击两次按钮。有人遇到过这个错误吗?你们的解决方案是什么?(:)
谢谢。

你有解决这个问题的方案或者替代方法吗?谢谢。 - Madhu
@Madhu,不是的。我已经向苹果报告了这个错误,但他们只要求我一遍又一遍地发送系统诊断信息... ): - Alex Zaikin
嗨..有同样的问题...你解决了吗? - Pan Mluvčí
我在这个bug上提出了一个WebRTC的问题:https://bugs.chromium.org/p/webrtc/issues/detail?id=9307#c1。不使用WebRTC的应用程序(如WhatsApp)没有这个问题。 - YYamil
我也遇到了同样的问题。使用WebRTC的CallKit。有人找到了任何替代方案吗? - Kiran Patel
你可以在这里检查我的答案 https://stackoverflow.com/a/55413256/6064953 对我来说,它按预期工作。 - Igor Rutmb
2个回答

13
    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有帮助。扬声器按钮按预期工作。


1
func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) { } - Алексей Смольский
我正在使用twilio-webrtc和call-keep来处理视频通话和callkit。目前它运行良好,但在手机锁定且无法处理事件时会出现问题。有什么想法如何处理这种情况? - Jaydeep Patel
3
尝试使用以下代码设置音频会话类别、模式和选项,如果成功则返回 nil: AVAudioSession.Category.playAndRecord, mode: AVAudioSession.Mode.voiceChat, options: [.duckOthers, .allowBluetoothA2DP, .allowBluetooth] )``` 我在所有项目中都使用它。也许之后有人会更改AVAudioSession。 - Алексей Смольский
对我有用!谢谢。 - Ankur Lahiry
@АлексейСмольский "有人在之后更改了 AVAudioSession" !!!!!!(Liveswitch) - Alex
显示剩余6条评论

0

之前的版本也遇到了同样的问题,所以这不是通话工具上发生的新问题。

这个问题必须从iOS端解决,我们无法控制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接