【问题标题】:Unable to fetch members of a group (XMPP)无法获取组的成员 (XMPP)
【发布时间】:2019-04-17 01:34:08
【问题描述】:

当我创建了一个特定的房间时,我可以获取该组中的成员。但是当组是由其他人创建时,我无法获取该组中的成员。

最初调用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)")

  }

第一个打印语句给出房间名称,第二个打印语句给出房间成员。但这只有在房间由我创建时才有效。如果房间是由其他人创建的,那么我无法获取成员...

【问题讨论】:

  • 您好,您找到解决方法了吗?

标签: ios swift xmpp chat


【解决方案1】:

获取成员列表(以及管理员和所有者列表)通常需要所有者权限,因为它会在匿名房间中泄露 Jabber ID。一些现代服务器(例如最近的 ejabberd 版本)对非匿名者进行了例外处理,并且还允许常规参与者获取该列表。

【讨论】:

    猜你喜欢
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多