fix call kit UI audio nor working

This commit is contained in:
ryanzhao 2021-11-10 15:30:52 +11:00
parent 248a02e1e9
commit 18afb4ae1c
2 changed files with 28 additions and 1 deletions

View File

@ -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)
}
}

View File

@ -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
}