CallKit integration
Disclaimer: I am not sure if this is the best way doing it but this has worked for me so far:
Configure WebRTC audio session to use manual audio and disable audio:
RTCAudioSession.sharedInstance().useManualAudio = true
RTCAudioSession.sharedInstance().isAudioEnabled = false
On your CXProvider delegate's provider(CXProvider, didActivate: AVAudioSession) method:
Call RTCAudioSession.sharedInstance().audioSessionDidActivate with the AVAudioSession from the CXProvider
Enable audio: RTCAudioSession.sharedInstance().isAudioEnabled = true
On your CXProvider delegate's provider(CXProvider, didDeactivate: AVAudioSession) call RTCAudioSession.sharedInstance().audioSessionDidDeactivate with the AVAudioSession from the CXProvider
WebRTC and CallKit talk from 2016: https://youtu.be/JB2MdcY1MKs?t=6m23s
credit to stasel from
WebRTC-iOS