首页 > 解决方案 > 即使应用程序在 swift 4 中处于活动状态,在接受 twilio 语音呼叫时呼叫屏幕也会消失

问题描述

我在其中一个项目中使用了 Twilio 的可编程语音。我的主要要求是在移动设备之间放置 VoIP 类。我可以从一台设备拨打电话到另一台设备,但是当我当时接听电话时,通话屏幕会自动关闭并在后台继续通话。在这种情况下,由于屏幕被关闭,用户没有断开呼叫或任何其他与呼叫相关的操作的选项。

这是我为应用程序处于前台时为调用创建的屏幕。

来电画面

呼叫完全成功,但在接收方接受时,它将关闭自定义屏幕。因此,用户没有任何选项可以断开呼叫或与呼叫相关的任何其他操作。

如果代码中有任何问题或与呼叫套件设置相关的任何事情我需要配置或任何其他问题?请帮忙。

标签: iosswifttwiliocallvoice

解决方案


据我所知,这是呼叫工具包框架的默认行为。在接受按钮上单击它会在应用程序处于前台时关闭屏幕。如果您想实现与 whats 应用程序相同的功能,则需要为此创建一个自定义屏幕。我为解决此问题所做的以下代码:

 func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) 
 {

    NSLog("provider:performAnswerCallAction:")
    // TwilioVoice.configureAudioSession()

    let vc = loadVC(strStoryboardId: SB_CHAT, strVCId: idVoiceCallVC) as! VoiceCallVC
    vc.callername = name
    vc.userPhoto = userphoto
    APP_DELEGATE.appNavigation?.pushViewController(vc, animated: true)
    assert(action.callUUID == self.callInvite?.uuid)
    TwilioVoice.isAudioEnabled = false
    self.performAnswerVoiceCall(uuid: action.callUUID)
    { (success) in
        if (success)
        {
            action.fulfill()

        }
        else
        {
            action.fail()
        }
    }
    action.fulfill()
}

您只需在调用工具包框架的这个委托方法中添加您的自定义屏幕显示代码。

 func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) {}

谢谢。


推荐阅读