Есть несколько вещей, которые вы могли бы рассмотреть:
Вероятно, ваш пользователь подписан на присутствие контакта, и наоборот.Он отменит подписку о присутствии контакта (поэтому он больше не будет получать уведомления о присутствии от его), отправив:
<presence to='contact@example.com' type='unsubscribe'/>
Он отменит подписку на свою собственнуюПрисутствие от контакта, отправив:
<presence to='contact@example.com' type='unsubscribed'/>
Наконец, вы можете удалить элемент из вашего списка.
<iq from='user@example.com/home' type='set' id='roster'>
<query xmlns='jabber:iq:roster'>
<item jid='contact@example.com' subscription='remove'/>
</query>
</iq>
Фактически, если вы отправите строфу выше, т.е. если вы хотитеОтмените обе подписки, вам не нужно отправлять разделы присутствия, они будут обрабатываться серверами.
Наконец, теперь вы можете заблокировать дальнейшее взаимодействие с пользователем с помощью jabber:iq:privacy
API.Это подробно объясняется здесь .
Общее управление присутствием / реестром объясняется в том же документе, вероятно, лучше всего здесь .