【发布时间】:2016-11-07 21:23:10
【问题描述】:
这不是一个给我代码的问题,这是一个可行性问题。如果我使用 CallKit 发起电话呼叫,是否也可以以编程方式结束它?
【问题讨论】:
这不是一个给我代码的问题,这是一个可行性问题。如果我使用 CallKit 发起电话呼叫,是否也可以以编程方式结束它?
【问题讨论】:
是的,我们可以以编程方式进行,但我们必须为该调用保留 UUID,
CXEndCallAction *endaction = [[CXEndCallAction alloc] initWithCallUUID:callUUID];
[cxcallcontrollerobject requestTransaction:[CXTransaction transactionWithActions:@[action]] completion:completion];
+ (CXTransaction *)transactionWithActions:(NSArray <CXAction *> *)actions {
CXTransaction *transcation = [[CXTransaction alloc] init];
for (CXAction *action in actions) {
[transcation addAction:action];
}
return transcation;
}
希望这会有所帮助。
【讨论】:
关闭所有调用 (Swift4)
func endCall(call: UUID) {
let endCallAction = CXEndCallAction(call: call)
let transaction = CXTransaction(action: endCallAction)
cxCallController.request(transaction) { error in
if let error = error {
print("EndCallAction transaction request failed: \(error.localizedDescription).")
self.cxCallProvider.reportCall(with: call, endedAt: Date(), reason: .remoteEnded)
return
}
print("EndCallAction transaction request successful")
}
}
【讨论】:
在 swift 中使用以下代码,uuidCallKit 是我当前通话的 UUID。
let controller = CXCallController()
let transaction = CXTransaction(action:
CXEndCallAction(call: uuidCallKit))controller.request(transaction,completion: { error in })
【讨论】: