ios - 即使应用程序在 swift 4 中处于活动状态,在接受 twilio 语音呼叫时呼叫屏幕也会消失
问题描述
我在其中一个项目中使用了 Twilio 的可编程语音。我的主要要求是在移动设备之间放置 VoIP 类。我可以从一台设备拨打电话到另一台设备,但是当我当时接听电话时,通话屏幕会自动关闭并在后台继续通话。在这种情况下,由于屏幕被关闭,用户没有断开呼叫或任何其他与呼叫相关的操作的选项。
这是我为应用程序处于前台时为调用创建的屏幕。
呼叫完全成功,但在接收方接受时,它将关闭自定义屏幕。因此,用户没有任何选项可以断开呼叫或与呼叫相关的任何其他操作。
如果代码中有任何问题或与呼叫套件设置相关的任何事情我需要配置或任何其他问题?请帮忙。
解决方案
据我所知,这是呼叫工具包框架的默认行为。在接受按钮上单击它会在应用程序处于前台时关闭屏幕。如果您想实现与 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) {}
谢谢。
推荐阅读
- java - int ai = a[i], j; 是什么意思?做?
- functional-programming - 幺半群和函子之间有什么关系?
- regex - XML 模式正则表达式“/”和“|”
- netlogo - 如何选择列表中价值最高的项目
- python-3.x - 检查目标时出错:预期 dense_6 有 2 个维度,但得到了形状为 (60000, 10, 10, 10, 10) 的数组
- c# - Dapper:不允许从数据类型 datetime 到 int 的隐式转换。使用 CONVERT 函数运行此查询
- java - spring - 引导(创建 bean 时出错) - org.springframework.beans.factory.UnsatisfiedDependencyException:使用名称创建 bean 时出错
- java - 如何使用地理位置数据以编程方式生成 .ics 日历邀请
- excel - 无法在excel中保存工作表
- laravel - 通过多个模型获取相关数据