diff --git a/Classes/CallManager.swift b/Classes/CallManager.swift index 5e144eabc..7cb4a2a73 100644 --- a/Classes/CallManager.swift +++ b/Classes/CallManager.swift @@ -33,11 +33,10 @@ import AVFoundation * CallManager is a class that manages application calls and supports callkit. * There is only one CallManager by calling CallManager.instance(). */ -@objc class CallManager: NSObject { +@objc class CallManager: NSObject, CoreDelegate { static var theCallManager: CallManager? let providerDelegate: ProviderDelegate! // to support callkit let callController: CXCallController! // to support callkit - let manager: CoreManagerDelegate! // callbacks of the linphonecore var lc: Core? @objc var speakerBeforePause : Bool = false @objc var speakerEnabled : Bool = false @@ -47,12 +46,13 @@ import AVFoundation var referedFromCall: String? var referedToCall: String? var endCallkit: Bool = false + static var speaker_already_enabled : Bool = false + fileprivate override init() { providerDelegate = ProviderDelegate() callController = CXCallController() - manager = CoreManagerDelegate() } @objc static func instance() -> CallManager { @@ -407,6 +407,7 @@ import AVFoundation } } } +<<<<<<< HEAD @objc func performActionWhenCoreIsOn(action: @escaping ()->Void ) { if (manager.globalState == .On) { @@ -442,6 +443,13 @@ class CoreManagerDelegate: CoreDelegate { } } else { CallManager.instance().endCallkit = false +======= + + func onCallStateChanged(core: Core, call: Call, state cstate: Call.State, message: String) { + if (cstate == .PushIncomingReceived) { + CallManager.instance().displayIncomingCall(call: call, handle: "Calling", hasVideo: false, callId: call.callLog?.callId ?? "") + return; +>>>>>>> 22b977a1a... use new delegates } } @@ -453,7 +461,7 @@ class CoreManagerDelegate: CoreDelegate { let video = UIApplication.shared.applicationState == .active && (core.videoActivationPolicy?.automaticallyAccept ?? false) && (call.remoteParams?.videoEnabled ?? false) // we keep the speaker auto-enabled state in this static so that we don't // force-enable it on ICE re-invite if the user disabled it. - CoreManagerDelegate.speaker_already_enabled = false + CallManager.speaker_already_enabled = false if (call.userData == nil) { let appData = CallAppData() @@ -507,7 +515,7 @@ class CoreManagerDelegate: CoreDelegate { if (CallManager.instance().speakerBeforePause) { CallManager.instance().speakerBeforePause = false CallManager.instance().enableSpeaker(enable: true) - CoreManagerDelegate.speaker_already_enabled = true + CallManager.speaker_already_enabled = true } break case .OutgoingInit, @@ -533,7 +541,7 @@ class CoreManagerDelegate: CoreDelegate { case .End, .Error: UIDevice.current.isProximityMonitoringEnabled = false - CoreManagerDelegate.speaker_already_enabled = false + CallManager.speaker_already_enabled = false if (CallManager.instance().lc!.callsNb == 0) { CallManager.instance().enableSpeaker(enable: false) // disable this because I don't find anygood reason for it: _bluetoothAvailable = FALSE; @@ -600,9 +608,9 @@ class CoreManagerDelegate: CoreDelegate { } if (cstate == .IncomingReceived || cstate == .OutgoingInit || cstate == .Connected || cstate == .StreamsRunning) { - if ((call.currentParams?.videoEnabled ?? false) && !CoreManagerDelegate.speaker_already_enabled && !CallManager.instance().bluetoothEnabled) { + if ((call.currentParams?.videoEnabled ?? false) && !CallManager.speaker_already_enabled && !CallManager.instance().bluetoothEnabled) { CallManager.instance().enableSpeaker(enable: true) - CoreManagerDelegate.speaker_already_enabled = true + CallManager.speaker_already_enabled = true } } diff --git a/msgNotification/Utils.swift b/msgNotification/Utils.swift index 761cd7ad6..d032440b4 100644 --- a/msgNotification/Utils.swift +++ b/msgNotification/Utils.swift @@ -30,7 +30,6 @@ enum LinphoneError: Error { class LinphoneLoggingServiceManager: LoggingServiceDelegate { init(config: Config, log: LoggingService?, domain: String) throws { if let log = log { - super.init() let debugLevel = config.getInt(section: "app", key: "debugenable_preference", defaultValue: LogLevel.Debug.rawValue) let debugEnabled = (debugLevel >= LogLevel.Debug.rawValue && debugLevel < LogLevel.Error.rawValue) @@ -46,7 +45,7 @@ class LinphoneLoggingServiceManager: LoggingServiceDelegate { } } - override func onLogMessageWritten(logService: LoggingService, domain: String, level: LogLevel, message: String) { + func onLogMessageWritten(logService: LoggingService, domain: String, level: LogLevel, message: String) { let levelStr: String switch level { diff --git a/msgNotificationContent/NotificationViewController.swift b/msgNotificationContent/NotificationViewController.swift index ca57528d8..a923e83c6 100644 --- a/msgNotificationContent/NotificationViewController.swift +++ b/msgNotificationContent/NotificationViewController.swift @@ -31,13 +31,11 @@ var needToStop: Bool = false var coreStopped: Bool = false var log: LoggingService! -class NotificationViewController: UIViewController, UNNotificationContentExtension { +class NotificationViewController: UIViewController, UNNotificationContentExtension, ChatMessageDelegate, CoreDelegate { var lc: Core? var config: Config! var logDelegate: LinphoneLoggingServiceManager! - var msgDelegate: LinphoneChatMessageManager! - var coreDelegate: LinphoneCoreManager! override func viewDidLoad() { super.viewDidLoad() @@ -120,9 +118,8 @@ class NotificationViewController: UIViewController, UNNotificationContentExtensi let local = try lc!.createAddress(address: localAddress) let room = lc!.findChatRoom(peerAddr: peer, localAddr: local) if let room = room { - msgDelegate = LinphoneChatMessageManager() let chatMsg = try room.createMessage(message: replyText) - chatMsg.addDelegate(delegate: msgDelegate) + chatMsg.addDelegate(delegate: self) chatMsg.send() room.markAsRead() } @@ -140,8 +137,7 @@ class NotificationViewController: UIViewController, UNNotificationContentExtensi logDelegate = try! LinphoneLoggingServiceManager(config: config, log: log, domain: "msgNotificationContent") lc = try! Factory.Instance.createSharedCoreWithConfig(config: config, systemContext: nil, appGroupId: APP_GROUP_ID, mainCore: false) - coreDelegate = LinphoneCoreManager() - lc!.addDelegate(delegate: coreDelegate) + lc!.addDelegate(delegate: self) try lc!.start() log.message(message: "core started") @@ -162,23 +158,19 @@ class NotificationViewController: UIViewController, UNNotificationContentExtensi } } - class LinphoneCoreManager: CoreDelegate { - override func onGlobalStateChanged(core: Core, state gstate: GlobalState, message: String) { - log.message(message: "global state changed: \(gstate) : \(message) \n") - if (gstate == .Shutdown) { - needToStop = true - } else if (gstate == .Off) { - coreStopped = true - } - } - } + func onGlobalStateChanged(core: Core, state gstate: GlobalState, message: String) { + log.message(message: "global state changed: \(gstate) : \(message) \n") + if (gstate == .Shutdown) { + needToStop = true + } else if (gstate == .Off) { + coreStopped = true + } + } - class LinphoneChatMessageManager: ChatMessageDelegate { - override func onMsgStateChanged(message: ChatMessage, state: ChatMessage.State) { - log.message(message: "msg state changed: \(state)\n") - if (state == .Delivered) { - isReplySent = true - } - } - } + func onMsgStateChanged(message: ChatMessage, state: ChatMessage.State) { + log.message(message: "msg state changed: \(state)\n") + if (state == .Delivered) { + isReplySent = true + } + } }