iOS 让用户退出群聊

Posted

技术标签:

【中文标题】iOS 让用户退出群聊【英文标题】:iOS leave user from group chat 【发布时间】:2015-04-20 12:46:09 【问题描述】:

我正在 iPhone 中开发一个群聊应用程序,我想在其中实现此功能:管理员可以删除/踢任何参与者。并且参与者必须收到管理员已将其从该组中删除的通知。

我尝试了下面的代码,但没有成功:

XMPPPresence *presence = [XMPPPresence presenceWithType:@"unavailable"];
[presence addAttributeWithName:@"from" stringValue:[[DatingUserDefaults sharedDefaults] getGroupName]];
[presence addAttributeWithName:@"to" stringValue:[[DatingUserDefaults sharedDefaults] getUsername]];
[xmppStream sendElement:presence]; 

我在 Google 上搜索并知道我必须在 Objective-C 中生成以下格式:

<presence
    from='harfleur@chat.shakespeare.lit/pistol'
    to='pistol@shakespeare.lit/harfleur'
    type='unavailable'>
  <x xmlns='http://jabber.org/protocol/muc#user'>
    <item affiliation='none' role='none'>
      <actor nick='Fluellen'/>
      <reason>Avaunt, you cullion!</reason>
    </item>
    <status code='307'/>
  </x>
</presence>

有人知道怎么做吗?

【问题讨论】:

您对此有什么解决方案吗?我也面临同样的问题。 【参考方案1】:

这对我有用。

<iq type="set" to="roomid" id="some random no"><query xmlns="http://jabber.org/protocol/muc#admin"><item affiliation="none" jid="jid you want to remove"></item></query></iq>


NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:@"http://jabber.org/protocol/muc#admin"]; 
NSXMLElement *item = [NSXMLElement elementWithName:@"item"]; 
[item addAttributeWithName:@"affiliation" stringValue:@"none"]; 
[item addAttributeWithName:@"jid" stringValue:"jid to remove"]; 
[query addChild:item]; XMPPIQ *RemoveUser = [[XMPPIQ alloc] initWithType:@"set" to:[XMPPJID jidWithString:roomid] elementID:@"some random id" child:query ]; 
[self.xmppStream sendElement:RemoveUser];

【讨论】:

是的,如果我是该组的管理员,它可以工作,但如果我不是该组的管理员并且想要删除或退出组,那么有什么建议?【参考方案2】:

这对我有用

[self.xmppRoom leaveRoom];

【讨论】:

以上是关于iOS 让用户退出群聊的主要内容,如果未能解决你的问题,请参考以下文章

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

uni-app 103退出和解散群聊

uni-app 104退出和解散群聊

强制 iOS iPhone youtube 嵌入播放器退出全屏

当用户退出我的 iOS 应用程序时,下次他们尝试使用 Facebook 登录时,他们应该必须重新输入他们的登录凭据

如何让用户在 Firebase 中退出?