Если вы хотите завершить вызов из своего пользовательского интерфейса, вы должны сделать это через 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)
.
Inво всех других случаях (т. е. удаленное завершение, отсутствие ответа и т. д. - см. CXCallEndedReason ) вы должны сообщать только о завершении вызова:
let provider: CXProvider
provider.reportCall(with: call.uuid, endedAt: Date(), reason: .remoteEnded)
в этом случае provider(_ provider: CXProvider, perform action: CXEndCallAction)
не будетназывается.