ios - Callkit - 如果从后台开始通话,则没有音频
问题描述
这从 iOS 13.3.1 开始发生
在我的应用程序中,我使用 Callkit + WebRTC 建立 VOIP 连接。我总是设法毫无问题地建立连接。
但是,从 13.3.1 开始,如果应用程序不在前台,我将无法启动 Callkit 调用:我设法建立了连接,但 callkit 没有启动(顶部没有绿色图标/栏)并且麦克风也没有被拾起。
我总是收到以下错误:
Error requesting transaction ((
" contactIdentifier=(null) video=0 relay=0 upgrade=0 retry=0 emergency=0 isVoicemail=0 ttyType=0 localLandscapeAspectRatio={0, 0} localPortraitAspectRatio={0, 0} dateStarted=(null) localSenderIdentityUUID=(null) shouldSuppressInCallUI=0>"
)): (Error Domain=com.apple.CallKit.error.requesttransaction Code=6 "(null)")
根据我收集到的信息(几乎没有关于此代码 6 错误的信息),如果 AudioSession 未激活,Callkit 可能会终止。但是,我不明白自 13.3.1 以来发生了什么会影响后台(我有音频、Airplay 和 PIP/IP 语音/后台获取)模式处于活动状态。
与此同时,我尝试了很多事情,从自己激活会话(在 callController.request 之前和 provider.reportOutgoingCall 之前)
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playAndRecord, mode: AVAudioSession.Mode.voiceChat, options: .mixWithOthers)
try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
try AVAudioSession.sharedInstance().setActive(true)
} catch {
print(error)
}
播放无声音频(试图强制激活 AVAudioSession)但没有任何运气。
有什么建议么?
解决方案
当我用我的项目实现调用工具包时,我遇到了同样的事情,我用 AudioSession 尝试了所有东西,但结果发现它与我用于 webrtc 和 sip 的库有关,webrtc 库中有一行检查应用程序状态是否在背景与否,如果没有连接音频。所以我的建议是检查 webrtc 代码库或在代码中搜索应用程序状态检查,如 UIApplicationStateBackground
或直接[UIApplication sharedApplication].applicationState
。
我希望这个能帮上忙!
推荐阅读
- javascript - 将 npm 集成到 VisualStudio
- .net - Azure 函数不适用于参数化 API
- python - 为什么'int'在Python中不可迭代,但'str'是?
- c# - MVC Core 无法从文件中呈现 CSHTML 视图
- swift - 传递给 SwiftUI 结构,绑定值
- matplotlib - 如何使用 PyPlot 和 Julia 在 Atom/Juno 中自动显示交互式绘图
- javascript - 如何使用 PHP 或任何其他语言将 javascript 变量值保存在文件中?
- owl-api - 几种本体的推理
- javascript - 如何将多种语言设置放在一个 .clang 格式的文件中
- node.js - 使用 Jest 测试 Babel-node Express App 时出现 Mongoose 错误