当我终止应用程序MUC组聊天成员被删除,我必须再次加入他们,同时从书签返回应用程序?我们不想一次又一次地重新加入。有谁能建议一下如何避免重合吗?
在Android smack中,有自动重新加入的规定。
即使是从Openfire后端,我们也有托管代码不删除。
因此,安卓运行良好,iOS正在删除用户。
请建议一下。
发布于 2021-12-16 12:22:10
不要每次都重新进入房间,当用户重新启动应用程序时,一定要设置小组的存在。
使用下面的代码函数设置存在,迭代您的所有组名和设置存在:
for group in chatListModel ?? []{
if(group.opponent_type == "2"){
print("Group Name: \(group.opponent_uuid ?? "")")
XMPPGlobal.sharedIntanceXMPP.xmppController.updatePresence(roomJID: XMPPJID(string: "\(group.opponent_uuid ?? "")@\(groupServerName)"))
}
}在XMPPController类中定义以下函数:
func updatePresence(roomJID : XMPPJID?) {
let presence = XMPPPresence(type: "presence")
presence.addAttribute(withName: "from", stringValue: self.xmppStream.myJID?.user ?? "")
presence.addAttribute(withName: "to", stringValue: "\(roomJID?.full ?? "")/\(self.xmppStream.myJID?.user ?? "")")
let element = DDXMLElement.init(name: "x", xmlns: XMPPMUCNamespace)
presence.addChild(element)
self.xmppStream.send(presence)
}希望它对你有用。
发布于 2022-01-03 15:28:57
尽管有答案。我想说几句:)
对于MUC房间:有一个附属关系,即长期的角色(管理,所有者等)和“订阅”角色(访问者,成员等)。
您所要问的是在XMPP MUC.7.1事件的顺序中描述的本身
如果您的XMPP后端配置正确,您可以将您的存在发送到这个房间,并从其他参与者那里接收到一些缓存的消息。
例如,对于ejabberd (process-one):mod_muc: history_size 设置定义内存中的缓存。
您可能不想得到一组房间事件,如上文7.1所述。
可能有一些服务器的扩展。如果ejabberd存在MUCPubSub,则发送订阅(不存在)并获取以下消息,此外还可以获取成员列表或跟踪其更改,等等:
<subscribe xmlns='urn:xmpp:mucsub:0'
nick='mynick'
password='roompassword'>
<event node='urn:xmpp:mucsub:nodes:messages' />https://stackoverflow.com/questions/70107051
复制相似问题