我的应用程序具有Callkit
功能。当我按扬声器按钮时,它会闪烁并动画到关闭状态(有时扬声器设置为LOUD,但图标仍然是OFF状态)。当我多次点击它时...可以清楚地看到此功能未能正确运行。
然而,WhatsApp一开始就将扬声器关闭,并在3秒后激活它,这样它就可以工作了。是否有人遇到过类似的问题并能给出解决方案?
我的应用程序具有Callkit
功能。当我按扬声器按钮时,它会闪烁并动画到关闭状态(有时扬声器设置为LOUD,但图标仍然是OFF状态)。当我多次点击它时...可以清楚地看到此功能未能正确运行。
然而,WhatsApp一开始就将扬声器关闭,并在3秒后激活它,这样它就可以工作了。是否有人遇到过类似的问题并能给出解决方案?
configureAudioSession()
),然后再调用-provider:performAnswerCallAction:
方法。例如,您可以在调用-[CXProvider reportNewIncomingCallWithUUID:update:completion:]
之前立即调用configureAudioSession()
,以确保在通知CallKit有来电之前完全配置音频会话。let rtcAudioSession = RTCAudioSession.sharedInstance()
rtcAudioSession.lockForConfiguration()
do {
try rtcAudioSession.setCategory(AVAudioSession.Category.playAndRecord.rawValue, with:
AVAudioSession.CategoryOptions.mixWithOthers)
try rtcAudioSession.setMode(AVAudioSession.Mode.default.rawValue)
try rtcAudioSession.overrideOutputAudioPort(.none)
try rtcAudioSession.setActive(true)
} catch let error {
debugPrint("Couldn't force audio to speaker: \(error)")
}
rtcAudioSession.unlockForConfiguration()
我通过以下步骤解决了这个问题。
在CXAnswerCallAction中,使用以下代码设置音频会话配置。感谢SO @Алексей Сmольский的帮助。
也许您可以将 setMode 设置为 AVAudioSessionModeDefault。
当我使用 CallKit + WebRTC 时
我配置 AVAudioSessionModeDefault 模式。
分配 CXProvider 并使用 reportNewIncomingCallWithUUID。
使用 WebRTC,在 ICEConnected 后,WebRTC 将模式更改为 AVAudioSessionModeVoiceChat,然后会出现扬声器问题。
稍后我将 setMode 设置回 AVAudioSessionModeDefault,扬声器就能正常工作。
之前的版本也遇到了同样的问题。所以这不是呼叫工具包上发生的新问题。 这个问题必须从iOS端解决。我们对此没有任何控制权。
请查看苹果开发者论坛
和