如何在结束通话后删除CallKit的回调选项UI
How to remove callback option UI of CallKit after ending the call
在我的应用程序中,我使用 CallKit 来接听电话。应用程序中没有拨出电话功能。一切都很好,但是当接收器或呼叫器结束呼叫时,它会显示带有回叫选项的 CallKit UI。我不想显示回调选项,怎么办?
我的结束通话代码
func end(call: SpeakerboxCall) {
let endCallAction = CXEndCallAction(call: call.uuid)
let transaction = CXTransaction()
transaction.addAction(endCallAction)
requestTransaction(transaction, action: "endCall")
}
private func requestTransaction(_ transaction: CXTransaction, action:
String = "") {
callController.request(transaction) { error in
if let error = error {
print("Error requesting transaction: \(error)")
} else {
print("Requested transaction \(action) successfully")
}
}
}
我已经解决了。我在交易未正确完成的情况下强行退出 CallKit。
AppDelegate.shared.providerDelegate?.provider.reportCall(with: call.uuid, endedAt: nil, reason: CXCallEndedReason.remoteEnded)
我们需要将 endedAt 设置为 nil 并将 reason 设置为 remoteEnded
关闭所有调用 (Swift4)
func performEndCallAction() {
for call in self.cxCallController.callObserver.calls {
let endCallAction = CXEndCallAction(call: call.uuid)
let transaction = CXTransaction(action: endCallAction)
cxCallController.request(transaction) { error in
if let error = error {
NSLog("EndCallAction transaction request failed: \(error.localizedDescription).")
return
}
NSLog("EndCallAction transaction request successful")
}
}
}
在我的应用程序中,我使用 CallKit 来接听电话。应用程序中没有拨出电话功能。一切都很好,但是当接收器或呼叫器结束呼叫时,它会显示带有回叫选项的 CallKit UI。我不想显示回调选项,怎么办?
我的结束通话代码
func end(call: SpeakerboxCall) {
let endCallAction = CXEndCallAction(call: call.uuid)
let transaction = CXTransaction()
transaction.addAction(endCallAction)
requestTransaction(transaction, action: "endCall")
}
private func requestTransaction(_ transaction: CXTransaction, action:
String = "") {
callController.request(transaction) { error in
if let error = error {
print("Error requesting transaction: \(error)")
} else {
print("Requested transaction \(action) successfully")
}
}
}
我已经解决了。我在交易未正确完成的情况下强行退出 CallKit。
AppDelegate.shared.providerDelegate?.provider.reportCall(with: call.uuid, endedAt: nil, reason: CXCallEndedReason.remoteEnded)
我们需要将 endedAt 设置为 nil 并将 reason 设置为 remoteEnded
关闭所有调用 (Swift4)
func performEndCallAction() {
for call in self.cxCallController.callObserver.calls {
let endCallAction = CXEndCallAction(call: call.uuid)
let transaction = CXTransaction(action: endCallAction)
cxCallController.request(transaction) { error in
if let error = error {
NSLog("EndCallAction transaction request failed: \(error.localizedDescription).")
return
}
NSLog("EndCallAction transaction request successful")
}
}
}