Obtenha JID completo do servidor ou cliente xmpp para solicitação de QI
-
11-12-2019 - |
Pergunta
Estou trabalhando em um aplicativo iOS que usa o servidor XMPPFramework e openfire xmpp.Estou quase terminando, mas não consigo fazer com que meu iOS receba uma solicitação de QI.Consegui receber mensagens e enviar solicitações de QI, mas não recebi solicitações de QI.
Tentei enviar a solicitação IQ do cliente iOS e do servidor XMPP, mas o aplicativo iOS simplesmente ignorou a solicitação IQ.Depois de muito tempo de pesquisa, reduzi meu problema.Acontece que eu estava enviando uma solicitação de QI para o JID simples.O Bare JID foi roteado para o servidor e não diretamente para o cliente.
A solução que encontrei foi obter o JID completo e definir a mensagem "to" do IQ para o JID completo e não para o JID simples.Estou tendo dificuldades para descobrir como posso obter o recurso ou transformar o JID simples em um JID completo.
Alguém poderia me dar algumas sugestões?Quero obter o JID completo para poder enviar uma solicitação de QI ao meu cliente iOS.
Solução
Inscreva-se na presença da pessoa para quem deseja enviar o IQ:
<presence type='subscribe' from='me@example.com' to='contact@example.com'/>
Eles têm que aceitar sua assinatura:
<presence type='subscribed' to='me@example.com' from='contact@example.com'/>
Você começará então a obter presença que inclui o JID completo de todos os seus clientes:
<presence to='me@example.com' from='contact@example.com/home'/>
Se eles tiverem um cliente completo, enviarão a você a presença marcada com XEP-0115, para que você possa saber se o cliente dele oferece suporte ao seu protocolo IQ antes de enviá-lo a ele:
<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>