Метод didReceiveNewSession QBRTCClientDelegate не вызывается

Недавно я начал работать над функцией видеозвонков P2P, используя Quickblox SDK. Я следил за их документацией по реализации видеозвонков, которая достаточно расплывчата, чтобы ее мог понять любой новичок. Несмотря на то, что я реализовал это, как указано в документации, я столкнулся с проблемой

Когда вызов инициирован, метод didReceiveNewSession не вызывается на принимающем конечном устройстве, а позже обнаруживает сбой, как показано ниже:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString count]: unrecognized selector sent to instance 0x10526bc10'

Я проверил приведенные ниже ссылки и попробовал разные комбинации для решения проблемы:

In didFinishLaunchingWithOptions of AppDelegate :

QBRTCClient.initializeRTC()

In viewDidLoad of ChatViewController :

override func viewDidLoad() {
  super.viewDidLoad()
  QBChat.instance.addDelegate(self)
  self.chatManager.connect() { _ in
      QBRTCClient.instance().add(self)
  }  
}

Метод делегирования протокола QBRTCClientDelegate (Не вызывается):

func didReceiveNewSession(_ session: QBRTCSession, userInfo: [String : String]? = nil) {
    print("[ChatViewContoller] didReceiveNewSession; userInfo: \(userInfo ?? ["value":"NA"])")
    if self.session != nil {
           // we already have a video/audio call session, so we reject another one
           // userInfo - the custom user information dictionary for the call from caller. May be nil.
           let userInfo = [String:String]() // optional
           session.rejectCall(userInfo)
           return
       }
       // saving session instance here
       self.session = session
}

Метод делегирования QBRTCClientDelegate (неожиданно вызывается и показывает состояние как Ожидание):

func session(_ session: QBRTCBaseSession, didChange state: QBRTCSessionState) {
    var stateStr = String()
        
    switch state {
    case .new: stateStr = "New"
    case .connecting: stateStr = "Connecting"
    case .connected: stateStr = "Connected"
    case .pending: stateStr = "Pending"
    case .closed: stateStr = "Closed"
    default: stateStr = "Default case"
    }
        
    print("[ChatViewContoller] didChange; state: \(stateStr)")
}

Пожалуйста, дайте мне знать, если я что-то упустил в реализованном процессе, и проведите меня через него. Заранее спасибо.


person Saurabh    schedule 03.08.2021    source источник