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.

Foi útil?

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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top