2

XMPPFramework と openfire xmpp サーバーを使用する iOS アプリに取り組んでいます。私はほぼ完了しましたが、iOS が IQ リクエストを受信することに固執しています。メッセージを受信して​​ IQ リクエストを送信できましたが、IQ リクエストを受信できませんでした。

iOS クライアントと XMPP サーバーから IQ リクエストを送信しようとしましたが、iOS アプリは IQ リクエストを無視しました。長い調査の後、私は自分の問題を絞り込みました。裸の JID に IQ リクエストを送信していたことがわかりました。Bare JID は、クライアントに直接ではなく、サーバーにルーティングされました。

私が見つけた解決策は、完全な JID を取得し、"to" IQ メッセージを裸の JID ではなく完全な JID に設定することでした。リソースを取得する方法や、裸の JID を完全な JID にする方法がわかりません。

誰かが私にいくつかの提案をしてもらえますか? IQ リクエストを iOS クライアントに送信できるように、完全な JID を取得できるようにしたいと考えています。

4

1 に答える 1

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