OpentTok (iOS) Как подписаться на изменения потока hasAudio

Мне нужна возможность в TokBox iOS SDK, чтобы узнать, имеет ли подписанный поток звук динамически / через событие. (OTStream.hasAudio)

OTSubscriberDelegate предоставляет обратные вызовы для состояния видео с подпиской subscriberVideoEnabled/Disabled, но я могу не нашел ничего для аудио.

  • JS SDK предоставляет для этого StreamPropertyChangedEvent.
  • Android SDK предоставляет StreamPropertiesListener для этого.
  • iOS кажется единственной платформой, для которой нет подходящего решения.

person david    schedule 03.07.2018    source источник


Ответы (1)


Евангелист-разработчик TokBox здесь.

Для iOS SDK мы не предоставляем делегата для изменения свойств потока, но вы можете реализовать наблюдение за ключевым значением (KVO), чтобы проверить, изменилось ли свойство наблюдаемого потока.

В приведенном ниже примере я добавил наблюдателя для свойства потока hasAudio, и наблюдатель будет печатать старые и новые значения всякий раз, когда они изменяются.

 func session(_ session: OTSession, streamCreated stream: OTStream) {
   let hasAudioObservation: NSKeyValueObservation = stream.observe(\.hasAudio, options: [.old, .new]) { object, change in
     guard let oldValue = change.oldValue else { return }
     guard let newValue = change.newValue else { return }
     print("Old stream value: \(oldValue)")
     print("New stream value: \(newValue)")
}
person Manik    schedule 03.07.2018
comment
Планируете ли вы обновить это в ближайшее время? Использование KVO для этого кажется излишним. Почему не замыкание или делегат? - person Friendly King; 26.03.2020