当我终止应用程序时,MUC 群聊成员将被删除
When i terminate app MUC group chat members are getting removed
当我终止应用程序时,MUC 群聊成员被删除,我必须在从书签返回应用程序时再次加入他们吗?我们不想一次又一次地重新加入。有人可以建议如何避免重新加入。
在 Android smack 中有自动重新加入的规定。
即使是从 Openfire 后端,我们也设法不删除代码。
所以 Android 工作正常,iOS 正在删除用户。
请提出建议。
不要每次都重新加入房间,而是在用户重新启动应用程序时设置群组的存在。
使用以下代码函数设置在线状态遍历所有群组名称并设置在线状态:
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 中定义以下函数 class:
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)
}
希望对你有用。
尽管有答案。
我想详细说明一下:)
如果是 MUC 房间:存在从属关系,即长期角色(管理员、所有者等)和“订阅”角色(访客、会员等)。
您所问的内容本身在 XMPP MUC. 7.1 Order of Events
中有描述
您发送出席信息以加入房间,并接收其他参与者的出席信息,如果您的 XMPP 后端配置正确,您还可以获得一些缓存消息。
例如对于 ejabberd(进程一):mod_muc: history_size
settings 定义内存缓存。
您可能不想获取房间事件集,如上文 7.1 所述。
可能有一些服务器的扩展。在 ejabberd 的情况下,MUCPubSub 您发送订阅(不存在)并收到以下消息,此外您还可以获得成员列表或跟踪其更改等:
<subscribe xmlns='urn:xmpp:mucsub:0'
nick='mynick'
password='roompassword'>
<event node='urn:xmpp:mucsub:nodes:messages' />
当我终止应用程序时,MUC 群聊成员被删除,我必须在从书签返回应用程序时再次加入他们吗?我们不想一次又一次地重新加入。有人可以建议如何避免重新加入。
在 Android smack 中有自动重新加入的规定。
即使是从 Openfire 后端,我们也设法不删除代码。
所以 Android 工作正常,iOS 正在删除用户。
请提出建议。
不要每次都重新加入房间,而是在用户重新启动应用程序时设置群组的存在。
使用以下代码函数设置在线状态遍历所有群组名称并设置在线状态:
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 中定义以下函数 class:
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)
}
希望对你有用。
尽管有答案。 我想详细说明一下:)
如果是 MUC 房间:存在从属关系,即长期角色(管理员、所有者等)和“订阅”角色(访客、会员等)。
您所问的内容本身在 XMPP MUC. 7.1 Order of Events
中有描述您发送出席信息以加入房间,并接收其他参与者的出席信息,如果您的 XMPP 后端配置正确,您还可以获得一些缓存消息。
例如对于 ejabberd(进程一):mod_muc: history_size
settings 定义内存缓存。
您可能不想获取房间事件集,如上文 7.1 所述。
可能有一些服务器的扩展。在 ejabberd 的情况下,MUCPubSub 您发送订阅(不存在)并收到以下消息,此外您还可以获得成员列表或跟踪其更改等:
<subscribe xmlns='urn:xmpp:mucsub:0'
nick='mynick'
password='roompassword'>
<event node='urn:xmpp:mucsub:nodes:messages' />