Как отключить микрофон и убрать оранжевый индикатор микрофона с помощью WebRTC в iOSIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как отключить микрофон и убрать оранжевый индикатор микрофона с помощью WebRTC в iOS

Сообщение Anonymous »

Мы используем WebRTC M110 с iOS 16.5 для приложения аудиовызовов и хотели бы разрешить нашим пользователям отключать звук, чтобы оранжевый индикатор, предоставляемый операционной системой, исчезал. Мы не нашли работающего решения.
Инициализируем аудиосеанс следующим образом

Код: Выделить всё

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
Чтобы отключить и включить звук нашего аудиопотока, мы устанавливаем isEnabled в текущее состояние отключения звука, установленное пользователем

Код: Выделить всё

peerConnection.transceivers.compactMap { $0.sender.track as? RTCAudioTrack }
.forEach { $0.isEnabled = isEnabled }
Похоже, что это общее решение этой проблемы, оно, например, описано в StackOverflow [1] [2] и используется в примерах проектов, где оно также не работает. После этого звук больше не отправляется, но оранжевый индикатор микрофона все еще отображается. Это не является стандартным для других приложений, таких как Signal, и мы бы хотели, чтобы оранжевый индикатор микрофона также не отображался. Как нам этого добиться?
Кроме того, мы попробовали следующее:
  • Мы попытались изменить аудиосеанс и установите категорию 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»