【问题标题】:Callkit - No audio if starting a call from backgroundCallkit - 如果从后台开始通话,则没有音频
【发布时间】:2020-05-20 07:20:24
【问题描述】:

这从 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)但没有任何运气。

有什么建议吗?

【问题讨论】:

    标签: ios background webrtc voip callkit


    【解决方案1】:

    当我用我的项目实现调用套件时,我遇到了同样的事情,我用 AudioSession 尝试了一切,但结果发现它与我用于 webrtc 和 sip 的库有关,webrtc 库中有一行检查应用程序状态如果它是否在后台,如果它没有连接音频。所以我的建议是检查 webrtc 代码库或在代码中搜索应用程序状态检查,如UIApplicationStateBackground 或直接[UIApplication sharedApplication].applicationState

    我希望这会有所帮助!

    【讨论】:

    • 你使用什么库?
    • 同样的问题,你是怎么解决的?
    • @famfamfam 我当时编辑库,但他们修复了最新版本。正如我所提到的,如果它是 bg 它没有初始化音频,则会对应用程序状态进行特定检查。
    • 谢谢,我知道你提到了,但是共享库对我们帮助很大,我仍然自己编写 callkit :(
    • @famfamfam 我们使用的库是 Mediastreamer2。里面有一个名为 iphonesnd.m 的文件。音频会话正在本课程中开始。希望这会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多