2015-09-22 1 views
1

Я использую сервер Openfire XMPP для приложения для Android-андроида. Я могу подключиться и войти на сервер, используя мое приложение.Процесс чата на сервере XMPP Openfire с использованием приложения Android

Теперь я хочу знать, как отправить запрос друга и принять запрос друга в этом приложении чата.

Я могу получить всех пользователей с сервера, но я хочу знать, как начать чат.

Заранее спасибо.

+0

Я предполагаю, что вы используете Smack как xmpp sdk для Android-приложения? – Mark

+0

yes smack api at android end @Mark –

+1

Возможный дубликат [Android ADD FRIEND используя Smack] (http://stackoverflow.com/questions/12812855/android-add-friend-using-smack) – legoscia

ответ

2

Процессы немного сложнее, чем кажется, чтобы добавить/принять запросы друзей, вам нужно провести какое-то жонглирование с помощью presence и roster iq stanzas.

Я попытаюсь дать вам указание о том, какие строфы отправляются/получаются с использованием операций с контактами ниже.

1. Add contact 
    To add a contact you need to send a `subscribe` stanza. 
    <presence xmlns="jabber:client" to="[email protected]/123" id="9VO8j-1" type="subscribe" from="[email protected]/1234" /> 
    1.1. Request accepted 
     When adding a contact and the other app "accepts the request" you receive two stanzas: 
      1. <presence xmlns="jabber:client" from="[email protected]/123" id="9VO8j-1" type="subscribed" to="[email protected]/1234" /> 
      2. <presence xmlns="jabber:client" from="[email protected]/123" id="9VO8j-2" type="subscribe" to="[email protected]/1234" /> 
      3. <presence xmlns="jabber:client" from="[email protected]/1234" id="9VO8j-3" type="subscribed" to="[email protected]/123" /> 

    1.2. Request Denied 
     When the request is denied you receive an "UNSUBSCRIBED" stanza. 
      Example: <presence xmlns="jabber:client" from="[email protected]/123" id="9VO8j-1" type="unsubscribed" to="[email protected]/1234" /> 

2. Accept contact request 
    1. <presence xmlns="jabber:client" from="[email protected]/1234" id="9VO8j-1" type="subscribed" to="[email protected]/123" /> 
    2. <presence xmlns="jabber:client" from="[email protected]/1234" id="9VO8j-2" type="subscribe" to="[email protected]/123" /> 

3. Deny contact request 
    <presence xmlns="jabber:client" from="[email protected]/1234" id="9VO8j-1" type="unsubscribed" to="[email protected]/123" /> 

4. Remove contact 
    When you "Delete" a contact you should be in fact be "deleting" it locally in your app and from the roster. 
    This is done by sending two stanzas: 
     1. <presence xmlns="jabber:client" from="[email protected]/1234" id="9VO8j-3" type="unsubscribe" to="[email protected]/123"/> 
     2. <iq from='[email protected]/1234' id='ah382g67' to='[email protected]/123' type='set'> 
      <query xmlns='jabber:iq:roster' ver='ver34'> 
       <item jid='[email protected]/123' subscription='remove'/> 
      </query> 
      </iq> 

Примечание: Потребительная случаи, описанные выше, не включают в себя все : IQ реестром строф, связанных с presence строф. Они автоматически отправляются сервером всякий раз, когда контакт меняет типы subscription и ask.

Для лучшего понимания того, как эти рабочие процессы работают подробно, я предлагаю вам ознакомиться с последним RFC (реализованным на вашем сервере). Вы можете найти его на office site.

См. Раздел 3. Управление реестром.

+1

Забыл упомянуть. Это общий ответ, вы можете легко адаптировать его к «smack» и отправлять/обрабатывать необходимые строфы. – Mark