forked from mirrors/linphone-iphone
decline call with busy reason
This commit is contained in:
parent
47a16429ae
commit
bd29182dd2
2 changed files with 14 additions and 13 deletions
|
|
@ -374,6 +374,7 @@ import AVFoundation
|
|||
providerDelegate.uuids.updateValue(uuid, forKey: callId)
|
||||
let callInfo = CallInfo.newIncomingCallInfo(callId: callId)
|
||||
callInfo.declined = true
|
||||
callInfo.reason = Reason.Busy
|
||||
providerDelegate.callInfos.updateValue(callInfo, forKey: uuid)
|
||||
} else {
|
||||
// end call
|
||||
|
|
@ -425,8 +426,7 @@ class CoreManagerDelegate: CoreDelegate {
|
|||
CallManager.instance().providerDelegate.updateCall(uuid: uuid!, handle: address, hasVideo: video)
|
||||
let callInfo = CallManager.instance().providerDelegate.callInfos[uuid!]
|
||||
if (callInfo?.declined ?? false) {
|
||||
// The call is already declined.
|
||||
try? call.decline(reason: Reason.Unknown)
|
||||
DispatchQueue.main.asyncAfter(deadline: .now()) {try? call.decline(reason: callInfo!.reason)}
|
||||
} else if (callInfo?.accepted ?? false) {
|
||||
// The call is already answered.
|
||||
CallManager.instance().acceptCall(call: call, hasVideo: video)
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@ import os
|
|||
var sasEnabled = false
|
||||
var declined = false
|
||||
var connected = false
|
||||
|
||||
|
||||
var reason: Reason = Reason.None
|
||||
|
||||
static func newIncomingCallInfo(callId: String) -> CallInfo {
|
||||
let callInfo = CallInfo()
|
||||
callInfo.callId = callId
|
||||
|
|
@ -92,17 +92,18 @@ class ProviderDelegate: NSObject {
|
|||
CallManager.instance().providerDelegate.endCallNotExist(uuid: uuid, timeout: .now() + 20)
|
||||
} else {
|
||||
Log.directLog(BCTBX_LOG_ERROR, text: "CallKit: cannot complete incoming call with call-id: [\(String(describing: callId))] and UUID: [\(uuid.description)] from [\(handle)] caused by [\(error!.localizedDescription)]")
|
||||
if (call == nil) {
|
||||
callInfo?.declined = true
|
||||
self.callInfos.updateValue(callInfo!, forKey: uuid)
|
||||
return
|
||||
}
|
||||
let code = (error as NSError?)?.code
|
||||
if code == CXErrorCodeIncomingCallError.filteredByBlockList.rawValue || code == CXErrorCodeIncomingCallError.filteredByDoNotDisturb.rawValue {
|
||||
try? call?.decline(reason: Reason.Busy)
|
||||
} else {
|
||||
try? call?.decline(reason: Reason.Unknown)
|
||||
switch code {
|
||||
case CXErrorCodeIncomingCallError.filteredByDoNotDisturb.rawValue:
|
||||
callInfo?.reason = Reason.DoNotDisturb
|
||||
case CXErrorCodeIncomingCallError.filteredByBlockList.rawValue:
|
||||
callInfo?.reason = Reason.DoNotDisturb
|
||||
default:
|
||||
callInfo?.reason = Reason.Unknown
|
||||
}
|
||||
callInfo?.declined = true
|
||||
self.callInfos.updateValue(callInfo!, forKey: uuid)
|
||||
try? call?.decline(reason: callInfo!.reason)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue