Невозможно получить членов группы (XMPP) - PullRequest
0 голосов
/ 14 ноября 2018

Когда я создаю определенную комнату, я могу выбрать членов этой группы. Но когда группа создана кем-то другим, я не могу выбрать членов этой группы.

Сначала вызывается метод didDiscoverRooms, а затем внутри него члены выбираются так ...

func xmppMUC(_ sender: XMPPMUC, didDiscoverRooms rooms: [Any], forServiceNamed serviceName: String) {
    print("XMPPRoom: didDiscoverRooms: \(rooms)")
    if let elements = rooms as? [DDXMLElement] {
      for element in elements {
        print("Name: \(String(describing: element.attributeStringValue(forName: "name")))")
        print("JID:  \(String(describing: element.attributeStringValue(forName: "jid")))")        
        if let name = element.attributeStringValue(forName: "jid"), let roomJID = XMPPJID(string: name) {
          let roomStorage = XMPPRoomMemoryStorage()
          let room = XMPPRoom(roomStorage: roomStorage!, jid: roomJID, dispatchQueue: DispatchQueue.main)
          room.addDelegate(self, delegateQueue: DispatchQueue.main)
          room.activate(self.xmppStream)
          room.fetchConfigurationForm()
          room.fetchMembersList()
        }
      }
    }
  }

room.fetchMembersList() в свою очередь вызывает этот метод делегата.

  func xmppRoom(_ sender: XMPPRoom, didFetchMembersList items: [Any]) {
    print("XMPPRoom: \(sender.roomJID)")
    print("XMPPRoom: didFetchMembersList: \(items)")

  }

Первый оператор печати дает название комнаты, а второй оператор печати дает членов комнаты. Но это работает только если комната создана мной. Если комната создана кем-то другим, я не смогу получить членов ...

1 Ответ

0 голосов
/ 14 ноября 2018

Для извлечения списка участников (а также списка администраторов и владельцев) обычно требуются разрешения владельца, поскольку это приведет к утечке идентификатора Jabber в анонимных комнатах. Некоторые современные серверы (например, последние версии ejabberd) делают исключение для неанонимных пользователей, а также позволяют постоянным участникам получать этот список.

...