我正在将iOS应用迁移到Twilio Voice 5.x API(iOS 13和Xcode 11),并且有一些问题:
我的应用程序使用来电。 Twilio要求:3.将呼叫报告给CallKit。有关如何将呼叫报告给CallKit的信息,请参考此示例。 我的问题:这是否意味着我不能在前台模式下使用更多自定义来电视图控制器?
收到呼叫邀请后,我立即发送请求以获取有关呼叫者的信息并显示它。我在后台做。它在以前的版本中有效,但是 现在不起作用,因为中断和处理程序必须立即在同一线程上工作。您有什么建议?
拒绝来电对我不起作用。应用已迁移到Twilio Voice 5.1.1。我接到来电:
func callInviteReceived(_ callInvite: TVOCallInvite) {
self.callKitProvider.reportNewIncomingCall(with: uuid, update: callUpdate) { (error) in
}
我按下CallKit屏幕上的Decline按钮。
CallKit代表得到:
func provider(_ provider: CXProvider, perform action: CXEndCallAction) {
activeCallInvite.reject()
action.fulfill()
}
在控制台上:“ DEBUG:Twilio:Core:从下面接收到传入的SIP消息:SIP / 2.0 600呼叫被拒绝”。但是在主叫方电话正在继续通话。任何想法?顺便说一句,取消开始的呼叫非常有效。
答案 0 :(得分:0)
您可以使用reportCall这样在CallKit呼入呼叫屏幕上更新值:
扩展名TwilioInteractor:TVONotificationDelegate {
func callInviteReceived(_ callInvite: TVOCallInvite) {
let from = callInvite.from ?? "?"
let uuid = callInvite.uuid
displayIncomingCall(from: from, uuid: uuid)
fetcher.fetchCaller(for: from, callInvite: callInvite) { caller in
self.updateIncomingCall(from: caller, uuid: uuid)
}
}
private func displayIncomingCall(from: String, uuid: UUID) {
let callHandle = CXHandle(type: .generic, value: from)
let callUpdate = CXCallUpdate()
callUpdate.remoteHandle = callHandle
callUpdate.hasVideo = false
callUpdate.supportsDTMF = true
callUpdate.supportsHolding = false
callUpdate.supportsGrouping = false
callUpdate.supportsUngrouping = false
self.callKitProvider.reportNewIncomingCall(with: uuid, update: callUpdate) { (error) in
if let error = error {
Log.e("Failed to report incoming call successfully: \(error.localizedDescription).")
} else {
Log.twilio("Incoming call successfully reported.")
}
}
}
private func updateIncomingCall(from: String, uuid: UUID) {
let callHandle = CXHandle(type: .generic, value: from)
let callUpdate = CXCallUpdate()
callUpdate.remoteHandle = callHandle
self.callKitProvider.reportCall(with: uuid, updated: callUpdate)
}
}