无法从服务器 XMPP 框架中获取 XMPPRoom 的详细信息

Posted

技术标签:

【中文标题】无法从服务器 XMPP 框架中获取 XMPPRoom 的详细信息【英文标题】:Cant fetch detail of XMPPRoom from the server XMPP Framework 【发布时间】:2014-03-07 14:05:32 【问题描述】:

我创建了一个仅限会员的永久房间。我邀请了多名住户。 现在我想为创建者邀请的用户获取房间的详细信息。

我试过这段代码:

XMPP 要求:

<iq from='hag66@shakespeare.lit/pda'
id='ik3vs715'
to='coven@chat.shakespeare.lit'
type='get'>
<query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>

ios 调用的 iOS 代码

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

NSString *iqID = [[appDelegate xmppStream] generateUUID];

XMPPJID *jID = self.room.roomJID;
XMPPIQ *element = [XMPPIQ iqWithType:@"get" to:jID  elementID:iqID child:query];
[element addAttributeWithName:@"from" stringValue:[[[appDelegate xmppStream] myJID] full]];
[[appDelegate xmppStream] fetchInformationForGivenIQ:element];

这应该给我这样的结果:

<iq from='coven@chat.shakespeare.lit'
id='ik3vs715'
to='hag66@shakespeare.lit/pda'
type='result'>
<query xmlns='http://jabber.org/protocol/disco#info'>
<identity
    category='conference'
    name='A Dark Cave'
    type='text'/>
<feature var='http://jabber.org/protocol/muc'/>
<feature var='muc_passwordprotected'/>
<feature var='muc_hidden'/>
<feature var='muc_temporary'/>
<feature var='muc_open'/>
<feature var='muc_unmoderated'/>
<feature var='muc_nonanonymous'/>
</query>
</iq>

但我得到了这个结果:

<iq xmlns="jabber:client" type="result" id="some ID" from="Group-ID" to="My Full JabberID">
<query xmlns="http://jabber.org/protocol/disco#info">
<feature var="http://jabber.org/protocol/disco#info">
</feature>
</query>
</iq>

谁能帮我解决我做错了什么。

提前致谢。

【问题讨论】:

少量更正,我什至没有得到公共房间的细节。如果 nonOwner 按照我建议的方式访问详细信息,他将无法获取详细信息。请指导。 查看答案中的前两个部分:XMPPFramework - Implement Group Chat (MUC) 【参考方案1】:

如果您想获取房间信息,可以拨打XMPPRoom的方法

- (void)fetchConfigurationForm;

然后,在房间的Delegate方法中获取房间信息

- (void)xmppRoom:(XMPPRoom *)sender didFetchConfigurationForm:(NSXMLElement *)configForm;

【讨论】:

嗨,Dee,感谢您的回复。但我已经做到了。我尝试通过 fetchConfigurationForm 获取 roomDetail,但出现错误。 (调用了didNotFetchConfigurationForm 委托方法并且iq 类型为错误)。我认为问题在于角色、从属关系、特权。您是否知道需要为受邀用户分配什么类型的角色、隶属关系和权限,通过这些我将调用相同的 fetchConfigurationForm 方法获取房间详细信息。 请阅读文档!XEP-0045 嘿,@NileshTripathi,我认为您在获取配置时遇到错误,因为您没有加入房间(这是我目前的情况)无需加入房间即可获取详细信息

以上是关于无法从服务器 XMPP 框架中获取 XMPPRoom 的详细信息的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 XMPP IOS 框架的 JID

无法使用 jaxl xmpp 框架进行连接

无法使用 iOS 的 XMPP 框架连接亚马逊上的 ejabberd 服务器

从服务器 SMACK Android XMPP 获取 VCard Avatar iq 数据包

XMPP 框架:无法接收我的消息

获取 openfire 聊天记录