【问题标题】:Get MUC Room list which a user already participated获取用户已参与的 MUC Room 列表
【发布时间】:2017-04-01 11:45:10
【问题描述】:

我使用 IOS XMPPFramework 作为我们的客户端基础架构,我们使用 ejabberd 作为我们的 XMPP 服务器。 但是,当用户删除他们的应用程序时,就无法检索已经注册的房间。 在 XMPP 中是否有可能(类似于 whatsapp)

谢谢

【问题讨论】:

标签: objective-c xmpp ejabberd xmppframework


【解决方案1】:
  1. 将房间配置为永久、仅限会员。
  2. 将用户添加到成员列表中。
  3. Discover room

    xmppStream = XMPPStream()        
    xmppStream!.addDelegate(self, delegateQueue: DispatchQueue.main)
    
    // MUC
    muc = XMPPMUC(dispatchQueue: DispatchQueue.main)
    muc?.activate(xmppStream)
    muc?.addDelegate(self, delegateQueue: DispatchQueue.main)
    
    muc?.discoverRooms(forServiceNamed: XmppMUCServer)
    

【讨论】:

  • 但这并没有给我未加入房间的列表。它只返回加入的房间但是当我删除我的应用程序时,所有群聊列表也会被删除,所以我需要获取我已经成为成员的所有组
  • 嗯,这是一个自定义要求,XMPP 没有涵盖,简单来说,您可以将用户房间列表存储在您的服务器上,然后当用户在同一设备或新设备上执行登录时,您从后端服务器检索房间,然后加入这些房间。
  • @tolgatanriverdi,你试过了吗?我正在按照我说的做,而且对我来说效果很好。删除应用程序,重新安装,启动。当 discoverRooms 时,我将获得我所属的所有房间。
  • 不错的解决方案。非常感谢。
【解决方案2】:

实现这一点的方法是将书签存储在服务器上,这将是您感兴趣的所有房间的列表。由于书签存储在服务器上,您仍然可以在重新安装应用程序时检索它们。

定义书签的 XMPP 扩展是XEP-0048

【讨论】:

    猜你喜欢
    • 2019-03-06
    • 2018-09-28
    • 2013-06-13
    • 2017-07-14
    • 1970-01-01
    • 2017-03-30
    • 2013-09-04
    • 2021-08-21
    • 2014-11-04
    相关资源
    最近更新 更多