2

我正在开发一个使用 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 请求。

4

1 回答 1

4

订阅您想要发送智商的人的存在:

<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>
于 2012-03-11T08:05:26.473 回答