Инициализируем аудиосеанс следующим образом
Код: Выделить всё
RTCAudioSession.sharedInstance().useManualAudio = true
RTCAudioSession.sharedInstance().lockForConfiguration()
try! RTCAudioSession.sharedInstance().setCategory(
AVAudioSession.Category.playAndRecord.rawValue,
with: []
)
try! RTCAudioSession.sharedInstance().setMode(AVAudioSession.Mode.voiceChat.rawValue)
try! RTCAudioSession.sharedInstance().setActive(true)
RTCAudioSession.sharedInstance().unlockForConfiguration()
RTCAudioSession.sharedInstance().isAudioEnabled = true
Код: Выделить всё
peerConnection.transceivers.compactMap { $0.sender.track as? RTCAudioTrack }
.forEach { $0.isEnabled = isEnabled }
Кроме того, мы попробовали следующее:
- Мы попытались изменить аудиосеанс и установите категорию AVAudioSession.Category.playAndRecord.rawValue при отключении звуковой дорожки. Однако это не работает, и AVAudioSession выдает ошибки, если мы не сделаем это до включения аудиосеанса. Отключение и последующее включение аудиосессии с помощью RTCAudioSession.sharedInstance().isAudioEnabled = false тоже не работает.
- У нас было взгляните на Signals RingRTC, и похоже, что они делают то же самое и просто устанавливают для isEnabled значение false при отключении звука вызова (github.com/signalapp/ringrtc/). Однако при их внедрении оранжевый индикатор микрофона пропадает практически мгновенно.
- Мы попробовали удалять треки непосредственно на одноранговом соединении. Но это тоже ничего не меняет.
Подробнее здесь: https://stackoverflow.com/questions/763 ... rtc-in-ios