final class RTCAudioSessionDelegateHandler: NSObject, RTCAudioSessionDelegate {
override init() {
super.init()
}
@objc
public func audioSessionMediaServerReset(_ rtcAudioSession: RTCAudioSession) {
NSLog("---Media Service--- \(#function) isMainThread \(Thread.isMainThread) 1" )
let session = rtcAudioSession.session
do {
try session.setCategory(.playAndRecord, mode: .voiceChat, options: [.allowBluetooth, .allowBluetoothA2DP, .mixWithOthers])
try session.setActive(true)
adjustSessionCategoryForWebRTC()
NSLog("---Media Service--- \(#function) isMainThread \(Thread.isMainThread) 2" )
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
RTCDispatcher.dispatchAsync(on: .typeAudioSession) {
RTCDispatcher.dispatchAsync(on: .typeAudioSession) {
if RTCAudioSession.sharedInstance().isAudioEnabled {
NSLog("---Media Service--- \(#function) isMainThread \(Thread.isMainThread) 3" )
RTCAudioSession.sharedInstance().audioSessionDidActivate(AVAudioSession.sharedInstance())
}
}
}
}
} catch let e {
NSLog("---Media Service--- \(#function) with error \(e.localizedDescription)")
}
}
@objc
public func audioSessionMediaServerTerminated(_ session: RTCAudioSession) {
NSLog("---Media Service--- \(#function)")
}
@objc
public func audioSessionMediaServicesWereLost(_ session: RTCAudioSession) {
NSLog("---Media Service--- \(#function)")
}
}