我正在开发一款使用XMPPFramework和openfire xmpp服务器的iOS应用。我差不多完成了,但我仍然坚持要让我的iOS接收IQ请求。我能够接收消息并发送IQ请求但不接收IQ请求。
我尝试从iOS客户端和XMPP服务器发送IQ请求,但iOS应用程序忽略了IQ请求。经过长时间的研究,我缩小了我的问题。事实证明,我正在向裸JID发送IQ请求。裸JID被路由到服务器而不是直接路由到客户端。
我找到的解决方案是获取完整的JID并将“to”IQ消息设置为完整的JID而不是裸JID。我很难搞清楚如何获取资源,或者将裸JID变为完整的JID。
有人可以给我一些建议吗?我希望能够获得完整的JID,以便我可以向我的iOS客户端发送IQ请求。
答案 0 :(得分:4)
订阅您要将IQ发送给的人员:
<presence type='subscribe' from='me@example.com' to='contact@example.com'/>
他们必须接受您的订阅:
<presence type='subscribed' to='me@example.com' from='contact@example.com'/>
然后,您将开始获得包含所有客户的完整JID的在线状态:
<presence to='me@example.com' from='contact@example.com/home'/>
如果他们拥有功能齐全的客户端,他们会向您发送标有XEP-0115的状态,这样您就可以在发送给他们之前判断他们的客户是否支持您的IQ协议:
<presence to='me@example.com' from='contact@example.com/home'>
<c xmlns='http://jabber.org/protocol/caps'
hash='sha-1'
node='http://code.google.com/p/exodus'
ver='QgayPKawpkPSDYmwT/WM94uAlu0='/>
</presence>