Ios 如何在CallKit中结束呼叫

Ios 如何在CallKit中结束呼叫,ios,callkit,Ios,Callkit,这不是一个给我代码的问题,这是一个可行性问题。如果我使用CallKit发起电话呼叫,是否也可以通过编程方式结束它?是的,我们可以通过编程方式完成,但我们必须保留该呼叫的UUID CXEndCallAction *endaction = [[CXEndCallAction alloc] initWithCallUUID:callUUID]; [cxcallcontrollerobject requestTransaction:[CXTransaction transactionWithAction

这不是一个给我代码的问题,这是一个可行性问题。如果我使用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; 
 }
CXEndCallAction*endaction=[[CXEndCallAction alloc]initWithCalluid:Calluid];
[cxcallcontrollerobject requestTransaction:[CXTransaction Transaction WithActions:@[action]]完成:完成];
+(CXTransaction*)transactionWithActions:(NSArray*)操作{
CXTransaction*Transaction=[[CXTransaction alloc]init];
对于(CXAction*action in actions){
[交易添加操作:操作];
} 
返回转换;
}

希望这有帮助

在swift中使用以下代码时,uuidCallKit是我当前通话的UUID

let controller = CXCallController()
let transaction = CXTransaction(action: 
CXEndCallAction(call: uuidCallKit))controller.request(transaction,completion: { error in })
关闭所有呼叫(Swift4)


我得到错误代码4,这意味着UUID无效。我正在传递建立调用时使用的UUID。UUID是如何存储的?不管是默认值还是其他方式。您是否将其转换为整数?(只是为了澄清)否,我将其作为AppDelegated中的全局变量。如果您正在生成uuid,请检查uuid是否已生成。即使我们面对uuid有时也会变为零。我已经检查过uuid是否为零并成功生成。嘿,reportCall方法似乎没有忽略CallKit UI,它对您有效?我已经编写了完全相同的代码,但不幸的是,它对我无效。你建议我做什么必要的检查吗?@vivektakrani-guard让uuid=uuid(uuidString:“CallId”)else{return}self.cxCallProvider.reportCall(带:uuid,endedAt:Date(),reason:.remoteend)直接回答这个问题。谢谢
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")

    }

}