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

时间:2017-03-06 12:04:49

标签: ios objective-c xmpp xmppframework node-xmpp

目前我正在进行聊天申请。

我将像Whats app一样实现群聊聊天退出。

例如, 我是集团所有人,过了一段时间后我将离开集团。离开集团后,任何一个集团成员都作为集团所有者分配。

为此我申请了以下代码:

首先获取群聊中的所有成员,然后所有成员手动离开群聊,但也无法正常工作。

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 个答案:

答案 0 :(得分:0)

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

作为Xmpp Owner UsecasesXmpp 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>