Ottieni Full Jid dal server XMPP o dal client per la richiesta IQ
-
11-12-2019 - |
Domanda
Sto lavorando su un'app iOS che utilizza il server XMPPFRAMWork e OpenFire XMPP.Ho quasi finito, ma sono bloccato con il mio iOS per ricevere la richiesta IQ.Sono stato in grado di ricevere messaggi e inviare richiesta IQ ma non ricevere richieste IQ.
Ho provato a inviare la richiesta IQ dal client IOS e al server XMPP, ma l'app IOS ha appena ignorato la richiesta IQ.Dopo un lungo periodo di ricerca, ho ristretto il mio problema.Si scopre che stavo inviando la richiesta di QQ a Bare Jid.Il JID nudo è stato indirizzato al server e non direttamente al cliente.
La soluzione che ho trovato è stato quello di ottenere il pieno JID e impostare il messaggio "in" a "IQ fino al Jid completo e non il Jid nudo.Sto avendo difficoltà a capire come posso ottenere la risorsa o rendere il jid nudo a un jid completo.
Qualcuno potrebbe per favore darmi qualche suggerimento?Voglio essere in grado di ottenere il completo Jid in modo da poter inviare la richiesta IQ al mio client iOS.
Soluzione
Iscriviti alla presenza della persona che desideri inviare il QI a:
<presence type='subscribe' from='me@example.com' to='contact@example.com'/>
.
Devono accettare il tuo abbonamento:
<presence type='subscribed' to='me@example.com' from='contact@example.com'/>
.
Avrai quindi inizio a prendere la presenza che include il pieno Jid da tutti i loro clienti:
<presence to='me@example.com' from='contact@example.com/home'/>
.
Se hanno un cliente completo, ti invieranno la presenza contrassegnata con xep-0115, quindi puoi dire se il loro client supporta il tuo protocollo IQ prima di inviarlo a loro:
<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>
.