当用户结束从CallKit UI发出的 call 时,应用程序将结束该 call ,并且实际的VOIP call 也将结束。但是,当我从自定义UI结束 call 时,VOIP call 结束,但CallKit仍处于 Activity 状态。如何从自定义UI结束CallKit session ?
当我在CallKit UI上按结束 call 时,将发生以下情况:
func provider(_ provider: CXProvider, perform action: CXEndCallAction) {
XCPjsua.shared()?.endCall()
action.fulfill()
}
当我从自定义UI结束通话时会发生这种情况(我应该在这里关闭CallKit吗?):
- (void)endcall {
[[XCPjsua sharedXCPjsua] endCall];
}
最佳答案
如果您想从自定义UI结束通话,则应通过CXTransaction
结束通话:
let callController = CXCallController()
let endCallAction = CXEndCallAction(call: aUUID)
callController.request(
CXTransaction(action: endCallAction),
completion: { error in
if let error = error {
print("Error: \(error)")
} else {
print("Success")
}
})
这将导致
provider(_ provider: CXProvider, perform action: CXEndCallAction)
被调用。在所有其他情况下(例如,远端,无人接听等-参见CXCallEndedReason),您只应报告已结束的 call :
let provider: CXProvider
provider.reportCall(with: call.uuid, endedAt: Date(), reason: .remoteEnded)
在这种情况下,不会调用
provider(_ provider: CXProvider, perform action: CXEndCallAction)
。关于ios - 如何从我的自定义正在进行的通话UI中结束在callkit上的通话 session ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55298930/