在 iOS 中使用 XMPP 从 Groupchat/Room 中退出特定成员/所有者

Posted

技术标签:

【中文标题】在 iOS 中使用 XMPP 从 Groupchat/Room 中退出特定成员/所有者【英文标题】:Exit Particular member/owner from Groupchat/Room using XMPP in iOS 【发布时间】:2017-03-06 12:04:49 【问题描述】:

目前我正在制作聊天应用程序。

我将像 Whats 应用一样实现群聊退出。

例如, 我是群组所有者,一段时间后我将离开群组。在我离开群组后,群组的任何一位成员都指定为群组所有者。

为此我应用了以下代码:

首先获取群聊中的所有成员,然后所有成员手动离开群聊,但它也不起作用。

NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:@"http://jabber.org/protocol/muc#admin"];

NSXMLElement *item = [NSXMLElement elementWithName:@"item"];

[item addAttributeWithName:@"affiliation" stringValue:@"member"];

[item addAttributeWithName:@"jid" stringValue:@"jid to remove"];

[query addChild:item];

XMPPIQ *RemoveUser = [[XMPPIQ alloc] initWithType:@"set" to:[XMPPJID jidWithString:[NSString stringWithFormat:@"%@@%@",dialuser2,kSIPDomain]] elementID:@"some random id" child:query];

[SharedAppDelegate.xmppStream sendElement:RemoveUser];

所以任何人都有代码或相关信息,请帮助我。

谢谢。

【问题讨论】:

【参考方案1】:

我认为您需要将 affiliation 设置为 owner 而不是 member

如Xmpp Owner Usecases、Xmpp Admin Usecases 描述(注意affiliation 的值):

将用户提升为所有者:

<iq from='crone1@shakespeare.lit/desktop' id='owner1' to='coven@chat.shakespeare.lit' type='set'> <query xmlns='http://jabber.org/protocol/muc#admin'> <item affiliation='owner' jid='hecate@shakespeare.lit'> <reason>A worthy witch indeed!</reason> </item> </query> </iq>

撤销会员资格

<iq from='crone1@shakespeare.lit/desktop' id='member2' to='coven@chat.shakespeare.lit' type='set'> <query xmlns='http://jabber.org/protocol/muc#admin'> <item affiliation='none' jid='hag66@shakespeare.lit'> <reason>Not so worthy after all!</reason> </item> </query> </iq>

禁止用户

<iq from='kinghenryv@shakespeare.lit/throne' id='ban1' to='southampton@chat.shakespeare.lit' type='set'> <query xmlns='http://jabber.org/protocol/muc#admin'> <item affiliation='outcast' jid='earlofcambridge@shakespeare.lit'> <reason>Treason</reason> </item> </query> </iq>

【讨论】:

是的,如果我是该组的管理员,它可以工作,但如果我不是该组的管理员并且想要从组中删除或退出,那么我该怎么做? @KaushikMovaliya 您找到解决问题的方法了吗?我也面临同样的问题。 没有@nikBhosale,还没有

以上是关于在 iOS 中使用 XMPP 从 Groupchat/Room 中退出特定成员/所有者的主要内容,如果未能解决你的问题,请参考以下文章

在 XMPP 框架 iOS 中阻止用户

如何在 ios 中使用 XMPP 接收离线消息

无法从 NSMutableDictionary iOS 应用程序中检索 XMPP JID。

从 ios 和 android 端连接到 xmpp 时获取所有组消息

如何在 iOS 中通过 xmpp 删除单个聊天?

无法将用户从 iOS 客户端注册到 Ejabberd 服务器 - XMPP