gpt4 book ai didi

ios - 如何从我的自定义正在进行的调用 UI 结束 callkit 上的调用 session ?

转载 作者:搜寻专家 更新时间:2023-11-01 06:11:38 26 4
gpt4 key购买 nike

当用户从 CallKit UI 结束通话时,应用会结束通话,实际的 VOIP 通话也会结束。但是当我从自定义 UI 结束通话时,VOIP 通话结束但 CallKit 仍处于事件状态。如何从我的自定义 UI 结束 CallKit session ?

这是当我在 CallKit UI 上按下结束调用时发生的情况:

 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 )您应该只报告已结束的调用:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com