Cod*_*_98 1 xcode ios swift callkit swift4.2
当用户结束从CallKit UI发出的呼叫时,应用程序将结束呼叫,并且实际的VOIP呼叫也将结束。但是,当我从自定义UI结束呼叫时,VOIP呼叫结束,但CallKit仍处于活动状态。如何从自定义UI结束CallKit会话?
当我在CallKit UI上按结束呼叫时,会发生以下情况:
func provider(_ provider: CXProvider, perform action: CXEndCallAction) {
XCPjsua.shared()?.endCall()
action.fulfill()
}
Run Code Online (Sandbox Code Playgroud)
当我从自定义UI结束通话时会发生这种情况(我应该在这里关闭CallKit吗?):
- (void)endcall {
[[XCPjsua sharedXCPjsua] endCall];
}
Run Code Online (Sandbox Code Playgroud)
如果您想通过自定义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")
}
})
Run Code Online (Sandbox Code Playgroud)
这将导致provider(_ provider: CXProvider, perform action: CXEndCallAction)被调用。
在所有其他情况下(例如,远程结束,未应答等...-参见CXCallEndedReason),您应该仅报告结束的呼叫:
let provider: CXProvider
provider.reportCall(with: call.uuid, endedAt: Date(), reason: .remoteEnded)
Run Code Online (Sandbox Code Playgroud)
在这种情况下provider(_ provider: CXProvider, perform action: CXEndCallAction)将不会被调用。
| 归档时间: |
|
| 查看次数: |
240 次 |
| 最近记录: |