Получить полный JID с сервера или клиента xmpp для запроса IQ - PullRequest
2 голосов
/ 11 марта 2012

Я работаю над приложением для iOS, которое использует XMPPFramework и сервер openfire xmpp. Я почти закончил, но застрял с получением iOS для получения запроса IQ. Я смог получать сообщения и отправлять IQ-запросы, но не получал IQ-запросов.

Я попытался отправить запрос IQ от клиента iOS и сервера XMPP, но приложение iOS просто проигнорировало запрос IQ. После долгого исследования я сузил вопрос. Оказывается, я отправлял запрос IQ на голый JID. Голый JID был направлен на сервер, а не напрямую к клиенту.

Решение, которое я нашел, состояло в том, чтобы получить полный JID и установить для сообщения "IQ" полный JID, а не пустой JID. У меня возникают трудности с выяснением того, как я могу получить ресурс или сделать пустой JID для полного JID.

Может кто-нибудь дать мне несколько советов? Я хочу получить полный JID, чтобы отправлять запрос IQ на мой клиент iOS.

1 Ответ

4 голосов
/ 11 марта 2012

Подписаться на присутствие человека, которому вы хотите отправить 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>
...