Процессы немного сложнее, чем кажется, чтобы добавить/принять запросы друзей, вам нужно провести какое-то жонглирование с помощью 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. Управление реестром.
Я предполагаю, что вы используете Smack как xmpp sdk для Android-приложения? – Mark
yes smack api at android end @Mark –
Возможный дубликат [Android ADD FRIEND используя Smack] (http://stackoverflow.com/questions/12812855/android-add-friend-using-smack) – legoscia