无法从服务器 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 的详细信息的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 iOS 的 XMPP 框架连接亚马逊上的 ejabberd 服务器