Callkit-如果从后台开始通话,则没有音频

时间:2020-05-20 07:20:24

标签: ios background webrtc voip 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语音/ 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激活),但没有运气。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在我的项目中实现呼叫工具包时,我遇到了同样的事情,我使用AudioSession尝试了所有操作,但结果发现这与我用于webrtc和sip的库有关,webrtc库中有一行用于检查应用程序状态是否是否在后台(如果未连接音频)。因此,我的建议是检查webrtc代码库或在代码内部进行搜索,以进行应用状态检查,例如UIApplicationStateBackground或直接访问[UIApplication sharedApplication].applicationState

我希望这会有所帮助!