From 18afb4ae1cef4ea3f2ea0c800e7ec76baa56f7a2 Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Wed, 10 Nov 2021 15:30:52 +1100 Subject: [PATCH] fix call kit UI audio nor working --- .../SessionCallManager+CXProvider.swift | 14 ++++++++++++++ SessionMessagingKit/Calls/WebRTCSession.swift | 15 ++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/Session/Calls/Call Management/SessionCallManager+CXProvider.swift b/Session/Calls/Call Management/SessionCallManager+CXProvider.swift index ab8954e08..84b0d2bb8 100644 --- a/Session/Calls/Call Management/SessionCallManager+CXProvider.swift +++ b/Session/Calls/Call Management/SessionCallManager+CXProvider.swift @@ -58,5 +58,19 @@ extension SessionCallManager: CXProviderDelegate { public func provider(_ provider: CXProvider, timedOutPerforming action: CXAction) { // TODO: handle timeout } + + public func provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession) { + print("[CallKit] Audio session did activate.") + AssertIsOnMainThread() + guard let call = self.currentCall else { return } + call.webRTCSession.audioSessionDidActivate(audioSession) + } + + public func provider(_ provider: CXProvider, didDeactivate audioSession: AVAudioSession) { + print("[CallKit] Audio session did deactivate.") + AssertIsOnMainThread() + guard let call = self.currentCall else { return } + call.webRTCSession.audioSessionDidDeactivate(audioSession) + } } diff --git a/SessionMessagingKit/Calls/WebRTCSession.swift b/SessionMessagingKit/Calls/WebRTCSession.swift index a3dbeab6d..05d17859d 100644 --- a/SessionMessagingKit/Calls/WebRTCSession.swift +++ b/SessionMessagingKit/Calls/WebRTCSession.swift @@ -94,6 +94,8 @@ public final class WebRTCSession : NSObject, RTCPeerConnectionDelegate { public static var current: WebRTCSession? public init(for contactSessionID: String, with uuid: String) { + RTCAudioSession.sharedInstance().useManualAudio = true + RTCAudioSession.sharedInstance().isAudioEnabled = false self.contactSessionID = contactSessionID self.uuid = uuid super.init() @@ -259,7 +261,7 @@ public final class WebRTCSession : NSObject, RTCPeerConnectionDelegate { print("[Calls] ICE connection state changed to: \(state).") if state == .connected { delegate?.webRTCIsConnected() -// configureAudioSession() + configureAudioSession() } } @@ -297,6 +299,17 @@ extension WebRTCSession { audioSession.unlockForConfiguration() } + public func audioSessionDidActivate(_ audioSession: AVAudioSession) { + RTCAudioSession.sharedInstance().audioSessionDidActivate(audioSession) + RTCAudioSession.sharedInstance().isAudioEnabled = true + configureAudioSession() + } + + public func audioSessionDidDeactivate(_ audioSession: AVAudioSession) { + RTCAudioSession.sharedInstance().audioSessionDidDeactivate(audioSession) + RTCAudioSession.sharedInstance().isAudioEnabled = false + } + public func mute() { audioTrack.isEnabled = false }